多态和多态性
多态是指同一类事物的多种形态,比如动物有小猫小狗小猪多种形态.
多态性是指不同的对象在调用相同的方法时会执行不同的操作。
多态性常常在继承中使用,比如动物都有speak这种方法,而小猫、小狗、小猪都继承自动物类。它们根据自身的特点分别实现了speak方法,那么我们不考虑对象种类的情况下调用speak方法,它们就会执行不同的操作(小猫说话是喵喵,小狗是汪汪,小猪是哼哼)。
class Animal:
def speak(self):
# 未被具体实现的方法
pass
class Cat(Animal):
def speak(self):
print('喵喵')
class Dog(Animal):
def speak(self):
print('汪汪')
class Pig(Animal):
def speak(self):
print('哼哼')
def tell_me(obj):
obj.speak()
cat = Cat()
dog = Dog()
pig = Pig()
tell_me(cat)
tell_me(dog)
tell_me(pig)
# 喵喵
# 汪汪
# 哼哼
多态性可以增加程序的灵活,无需考虑对象的种类,只需调用同一种方法就可以执行不同的操作;它还能增加程序的可扩展性,比如你又创建了一个继承自Animal的子类Fox,那么我们无须更改其他的代码,仅调用tell_me函数就可以让Fox的对象说话。
非常常用的多态性例子,type()函数。我们传入不同类型的参数,它就返回给我们不同的结果