鸭子类型

1.多态

python中的多态与c++和java中的多态并没有什么不同,即是对于不同的对象调用相同的方法,会呈现出不同的状态。

class Animal(object):
    def say(self):
        print("I am a animal !")

class Duck(Animal):
    def say(self):
        print("I am a Duck !")

class Dog(Animal):
    def say(self):
        print("I am a Dog !")

class Cat(Animal):
    def say(self):
        print("I am a Cat !")

以上图为例,不同的对象调用say方法,会表现出不同的行为。

    duck=Duck()
    duck.say()
    dog=Dog()
    dog.say()
    cat=Cat()
    cat.say()

    #输出如下
    I am a Duck !
    I am a Dog !
    I am a Cat !
    I am a Duck !
    I am a Dog !
    I am a Cat !

 

2鸭子类型

如果它像鸭子一样走路,像鸭子一样叫,那么它就是一只鸭子。

                                                                                                 --一位智者

class Animal(object):
    def say(self):
        print("I am a animal !")

class Duck(Animal):
    def say(self):
        print("I am a Duck !")

class Dog(Animal):
    def say(self):
        print("I am a Dog !")

class Cat(Animal):
    def say(self):
        print("I am a Cat !")

class Computer:
    def say(self):
        print("我是一台计算机!")

def fun(obj):
    obj.say()

def main():
    duck=Duck()
    dog=Dog()
    cat=Cat()
    com=Computer()

    fun(duck)
    fun(dog)
    fun(cat)
    fun(com)

if __name__=="__main__":
    main()

#结果
I am a Duck !
I am a Dog !
I am a Cat !
我是一台计算机!

在上述代码中加入一个函数,函数的参数是一个对象,函数的行为是调用obj对象的say()方法。不管是什么对象,只要有say()这个方法,就可以通过fun函数调用。即是不管你是什么对象,只要你像鸭子一样走路,像鸭子一样叫,你就是一个鸭子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值