Python面向对象编程-多态
一、多态
多态的优势具体可以总结为如下⼏点,具体为:
增加了持续的灵活性
增加了持续的额外扩展的功能
1 class Animal(object): 2 def talk(self): 3 print("动物会叫") 4 5 class Cat(Animal): 6 def talk(self): 7 print("猫会叫") 8 9 class Dog(Animal): 10 def talk(self): 11 print("狗也会叫") 12 13 def func(animal): 14 animal.talk() 15 if __name__ == '__main__': #函数进入的入口 16 cat=Cat() #对猫进行实例化的过程 17 func(animal=cat) #调用方式不需要修改,就直接可以输出 18 dog=Dog() 19 func(animal=dog)
运行结果如下:
猫会叫
狗也会叫
Process finished with exit code 0
通过上述代码,我们可以知道:多态性可以理解为对Cat⽽⾔只是产⽣了⼀个对象,使⽤者完全可以在不需要修改⾃⼰的情况下,就能够调⽤Cat和Dog对象的talk的⽅法。
二、鸭子类型
鸭子类型:在Python⾥⾯,所谓鸭⼦类型就是指“如果看起来像,叫声像⽽且⾛路起来像鸭⼦,那么它就是鸭⼦”。
如上述,如果看起来像,叫声像猫,那么它就是猫。