(十二)类<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中的多态特点
"""