多态:同一事物的多种形态
多态性:指的是可以在不考虑对象的类型的情况下而直接使用对象
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')
class Cat(Animal): # 动物的形态之四:猫
def talk(self):
print('say miaomiao')
peo1 = People()
dog1 = Dog()
pig1 = Pig()
cat1 = Cat()
# 动态多态性
peo1.talk()
dog1.talk()
pig1.talk()
cat1.talk()
结果:
say hello
say aoao
say wangwang
say miaomiao
(多态性好处之一)可以使用同一接口来调用
(多态性好处之二)增加了程序可扩展性
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')
class Cat(Animal): # 动物的形态之四:猫
def talk(self):
print('say miaomiao')
peo1 = People()
dog1 = Dog()
pig1 = Pig()
cat1 = Cat()
def func(animal):
animal.talk()
func(peo1)
func(pig1)
func(dog1)
func(cat1)
结果:
say hello
say aoao
say wangwang
say miaomiao