Python——多态性


术语“多态性”是指在不同上下文中采取不同形式的功能或方法。由于Python是一种动态类型语言,因此Python中的多态性非常容易实现。

如果父类中的方法被其不同子类中的不同业务逻辑覆盖,则基类方法是多态方法。

例子

作为下面给出的多态性的例子,我们有一个抽象类shape 。它被圆形和矩形两个类用作父类。这两个类都以不同的方式重写parent的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首先引用circle 对象并调用circle 类中的draw() 方法。在下一次迭代中,它引用矩形对象并调用矩形类中的draw()方法。因此shape类中的draw()方法是多态的。