Python 多态性
术语“多态性”指的是在不同上下文中采用不同形式的函数或方法。由于Python是一种动态类型语言,因此在Python中实现多态性非常容易。
如果在父类中的方法被不同的子类用不同的业务逻辑重写,则基类方法就是一个多态方法。
示例
以下是一个多态性示例,我们有一个抽象类shape,它作为两个类circle和rectangle的父类。这两个类以不同的方式重写了父类的draw()方法。
from abc import ABC, abstractmethod
class shape(ABC):
@abstractmethod
def draw(self):
"Abstract method"
return
class circle(shape):
def draw(self):
super().draw()
print ("Draw a circle")
return
class rectangle(shape):
def draw(self):
super().draw()
print ("Draw a rectangle")
return
shapes = [circle(), rectangle()]
for shp in shapes:
shp.draw()
输出
当你运行这段代码时,会产生以下输出-
Draw a circle
Draw a rectangle
变量 shp 首先引用圆形对象并调用圆形类的draw()方法。在下一次迭代中,它引用矩形对象并调用矩形类的draw()方法。因此,shape类中的draw()方法是多态的。