Discuss / Python / 自言自语

自言自语

Topic source

よろしく

#1 Created at ... [Delete] [Delete and Lock User]
def run_twice(animal):
    animal.run()
    animal.run()

参数animal是一个变量名,只是刚好这个变量名命名为animal,你也可以命名为其他,比如xyz,而非是指需传入animal类型。只要传入的类型有run()方法可被调用,就不会报错。

所谓鸭子类型,不明就里的同学可能是没接触过静态语言(比如java,C++)。静态语言编译时都会进行类型检查,通常要求明确指定类型。而动态语言的鸭子类型则不关心对象的类型,只关心对象的行为,不管白猫黑猫,能撸就是好猫猫。

lldhsds

#2 Created at ... [Delete] [Delete and Lock User]

”只要传入的类型有run()方法可被调用,就不会报错。“

这句说的是不是不太对啊,函数定义的是偶这里传入的任意变量名都可以,不一定需要有ru()方法。只需要最终函数调用的时候,传入的对象有run方法就行了。我测试下下面这种也可以:

def run_twice(aa):    aa.run()    aa.run()

  • 1

Reply