(十二)类<4>多态

2019-01-17  本文已影响0人  费云帆

1.大师的例子:

# Speaking pets in python

class Pet:
    def speak(self):pass

class Cat(Pet):
    def speak(self):
        print("meow!")

class Dog(Pet):
    def speak(self):
        print("woof!")

def command(pet):
    pet.speak()

pets=[Cat(),Dog()]

for pet in pets:
    command(pet)
# 结论是Pet类是多余的
>>>
meow!
woof!

大师修改的例子:

# Speaking pets in python,but without base classes

"""class Pet:
    def speak(self):pass"""

class Cat:
    def speak(self):
        print("meow!")

class Dog:
    def speak(self):
        print("woof!")

class Bob:
    def bow(self):
        print("Thank you,thank you!")
    def speak(self):
        print("Hello,welcome to the neighborhand!")
    def drive(self):
        print("Beep,beep!")
def command(pet):
    pet.speak()

pets=[Cat(),Dog(),Bob()]
for pet in pets:
    command(pet)
>>>
meow!
woof!
Hello,welcome to the neighborhand!

"""
不仅去掉了没什么用的类 Pet ,又增加了一个新的类 Bob ,这个类根本不是
如 Cat 和 Dog 那样的类型,只是它碰巧也有一个名字为 speak() 的方法罢了。但是,也依然
能够在 command() 函数中被调用。
这就是Python中的多态特点
"""
上一篇下一篇

猜你喜欢

热点阅读