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内置类型(魔法函数)的对象,都可以划分到一类

 

posted on 2019-01-15 13:09  拾掇的往昔  阅读(184)  评论(0编辑  收藏  举报

导航