鸭子类型(Python)

什么是鸭子类型(Duck Typing)?鸭子类型可解释为,如果一只动物,走起来像鸭子或者叫起来像鸭子,就可以把它当作鸭子。

  python崇尚一种鸭子类型,类与类之间不用共同继承一个父类,只需要将它们做得像一种事物即可。

例如,如果想编写现有对象的自定义版本。

  1、可以继承该对象

  2、可以创建一个外观和行为像,但与它无任何关系的全新对象(通常用于保存程序组件的松耦合度)

引用自--休耕

 

对于C++来说,我们要调用某个以类A为参数的函数,则我们传入的类型必须是类A类型,或者是类A的子类类型。但在Python中,却没有这个要求,它只要求我们在函数体中实现部分,在类B中同样也能实现,那么B就能传入函数中。

 

class Student(object):
    def run(self):
        print('BiuBiuBiu Running One!!!')

class Infor(object):
    def run(self):
        print('BiuBiuBiu Running Two!!!')


def runT(Student):
    Student.run()

StuA=Student()
runT(StuA)

infA=Infor()
runT(infA)

 

可以看到即使函数runT的参数类型为Student,但Infor类型依然可以传入,因为Infor类中也有run函数

posted @ 2019-03-06 21:43  Hk_Mayfly  阅读(842)  评论(0)    收藏  举报