python多态

class Anmail(object):
    def __init__(self,name):
        self.name=name

    def talk(self):
        return "Anmail talking"


class Dog(Anmail):
    def __init__(self,name,age):
        super(Dog, self).__init__(name)
        self.age=age

    def talk(self):
        return "wangwangwang"


class Cat(Anmail):
    def __init__(self,name,age):
        super(Cat,self).__init__(name)
        self.age = age

    def talk(self):
        return "miaomiaomiao"


def anmail_talk(obj):
    return obj.talk()


d=Dog("德国黑",3)
c=Cat("波斯猫",3)

print(anmail_talk(d))
print(anmail_talk(c))
View Code

优化后

class Anmail(object):
    def __init__(self,name):
        self.name=name

    def talk(self):
        return "Anmail talking"
    @staticmethod
    def anmail_talk(obj):
        return obj.talk()


class Dog(Anmail):
    def __init__(self,name,age):
        super(Dog, self).__init__(name)
        self.age=age

    def talk(self):
        return "wangwangwang"


class Cat(Anmail):
    def __init__(self,name,age):
        super(Cat,self).__init__(name)
        self.age = age

    def talk(self):
        return "miaomiaomiao"

d=Dog("德国黑",3)
c=Cat("波斯猫",3)

print(Anmail.anmail_talk(d))
print(Anmail.anmail_talk(c))
View Code

 

posted @ 2018-10-18 11:02  王亚锋  阅读(211)  评论(0编辑  收藏  举报