指的是一个类拥有多个形态,比如动物有多种形态:人、猫、狗……
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')
peo=People()
dog=Dog()
pig=Pig()
多态性:动物都拥有相同的方法talk,只不过是不同的动物去执行,而相同的方法而产生了不相同的结果。
使用多态的优点:
1. 增加可扩展性
2. 增加易懂性
因为都是调用相同方法,未来扩展不需要改变代码的调用。
鸭子类型
外观和功能一样的类型,那么就是鸭子类型:
class QQpay():
def pay(self,money):
print('使用qq支付了%s元'%money)
class Wechatpay():
def pay(self,money):
print('使用微信支付了%s元'%money)
鸭子类型是Python专属,它并不是一种方法、模块、函数之类的东东,而是大家口头上的一种默契,即 用相同的方法去完成功能一样的事,你用A方法去写一个东西,我也是A方法去写一个东西,他也是用A方法写一个东西。