Discuss / Python / animal只是告诉计算机run_twice需要一个参数,是它的调用方式决定了需要传入什么类型的实参

animal只是告诉计算机run_twice需要一个参数,是它的调用方式决定了需要传入什么类型的实参

Topic source

一盒噪噪

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

animal只是一个形参而已,在函数头 def run_twice(animal) 上,本身并没有类型

它只是告诉计算机,函数run_twice需要一个参数,而这个参数具体需要什么样的,是整数类型还是字符串又或者函数,需要看具体引用,也就是run_twice函数中的如何引用annimal

animal.run()告诉计算,animal调用了它中的run函数,所以annimal必须是一个类或类对象,(只有类才能调用它中的函数,函数并不能用 函数名.函数名() 的方式调用它的内嵌函数)

而且这个类/类对象中必须有一个run函数,它才能调用run。

所以计算机知道animal是一个包含run函数的类。

而至于这个类具体是什么,是Animal还是Animal的子类Dog或者另一个类Timer 

这都无所谓。

其实在函数run_twice的作用是调用某个类中的函数run,你传入不同的类,每次调用的是这次传入的类中的run,这个run函数并不是同一个

鸭子类型:现在把 类Animal当做鸭子, 把调用run函数当做鸭子的走路姿势

只要这个类可以调用run函数,就把它看做鸭子

也就是说走路姿势像鸭子,你就是鸭子

皆由唧唧

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

到位


  • 1

Reply