一.什么叫多态
多态:同一种事物的多种形态
例如:水,有冰,液态水,水蒸气;动物,有人,狗,猪,猫.
二.为何用多态
继承同一个类的子类中有相同的方法名,那么子类产生的对象不用考虑具体的类型直接调用功能
多态的精髓:统一标准
不推崇!!!!
import abc
#abstract抽象
class Animal(metaclass=abc.ABCMeta):#标准的统一,父类是定标准的,不需要实例化
@abc.abstractmethod
def speak(self):
pass
@abc.abstractmethod
def eat(self):
pass
# 父类是用来制定标准的,不能被实例化
#父类制定的标准,子类必须按着这个标准来,不推崇这种方法,推崇约定俗成
class People(Animal):
def speak(self):
print('hello')
def eat(self):
pass
class Dog(Animal):
def speak(self):
print('汪汪汪')
def eat(self):
pass
class Pig(Animal):
def speak(self):
print('哼哼哼')
def eat(self):
pass
peo1 = People()
dog1 = Dog()
pig1 = Pig()
peo1.speak()
dog1.speak()
pig1.speak()
def my_speak(animal):
animal.speak()
my_speak(peo1)
my_speak(dog1)
my_speak(pig1)
python讲究的是规范,是约定俗成,而不是规定,所以不推崇上面这种方法,python推崇的鸭子类型
鸭子类型:只要你叫的声音的像鸭子,走路像鸭子,你就是鸭子.