多态:指一类事物有多种形态,对象通过他们共同的属性和动作来操作及访问,而不需要考虑他们具体的类。
多态表明了动态(运行时)绑定的存在,不同的对象调用相同的方法。多态是继承的实现细节。
import abc
class Animal(metaclass=abc.ABCMeta): #同一类事物:动物
@abc.abstractmethod
def talk(self):
pass
class People(Animal): #动物的形态之一:人
def talk(self):
print('say hello')
class Dog(Animal): #动物的形态之二:狗
def talk(self):
print('say wangwang')
class Pig(Animal): #动物的形态之三:猪
def talk(self):
print('say aoao')
po = People()
do = Dog()
pi = Pig()
def func(obj):
obj.talk()
func(po)
func(do)
func(pi)
# 上述过程就称之为多态,由动物类实例化出人、狗、猪,但是都可以调用同一个talk方法,也可以用一个函数来统一调用