Python学习 -之鸭子类型和多态
什么是鸭子类型
当看到一只鸟走起来像鸭子,游泳起来也像鸭子,叫起来也像鸭子
那么这只鸟就可以被称为鸭子
在java中要想实现多态,
1 要先实现一个父类,在父类中声明一个虚函数
2 实现一个子类,在子类中要继承父类,并要在子类中重写父类声明的虚函数
#列如
class animal { void say(string ss) } class cat : animal { void sat(string ss) { print (ss) } } class dog : animal { void sat(string ss) { print (ss) } } animal an = cat # 用父类定义一个变量,用子类给变量赋值 an.say() # 调用子类的方法,这样来实现多态
python中就不用这么麻烦了,python在定义一个变量时不需要指定一个类型,
只要在不同的类中定义一样的方法就行了。
只要有共同的方法,就可以将它们归为一类,这就是鸭子类型。
class Cat(object): def say(self): print('i am a cat') class Dog(object): def say(self): print('i am a dog') class Duck(object): def say(self): print('i am a duck') animal_list = [Cat, Dog, Duck] for animal in animal_list: animal().say() #他们都有共同的方法
基于这一点,凡是拥有python内置类型(魔法函数)的对象,都可以划分到一类