在Python中实现接口多态性通常是指通过抽象基类(Abstract Base Classes, ABCs)来定义接口,然后让不同的子类实现这些接口。Python中的abc模块提供了创建抽象基类的工具。以下是如何在Python中实现接口多态性的一个示例:
- 定义抽象基类:使用
abc模块中的ABC类和abstractmethod装饰器来定义一个抽象基类和其中的抽象方法。
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
@abstractmethod
def perimeter(self):
pass
在这个例子中,Shape是一个抽象基类,它定义了两个抽象方法:area和perimeter。任何继承自Shape的子类都必须实现这两个方法。
- 实现具体的子类:创建具体的类来继承抽象基类,并实现其抽象方法。
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
def perimeter(self):
return 2 * 3.14 * self.radius
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
def perimeter(self):
return 2 * (self.width + self.height)
Circle和Rectangle类都继承自Shape类,并实现了area和perimeter方法。
- 使用多态性:通过抽象基类来调用子类的方法,实现多态性。
def calculate(shape):
print(f"Area: {shape.area()}")
print(f"Perimeter: {shape.perimeter()}")
# 创建Circle和Rectangle的实例
circle = Circle(5)
rectangle = Rectangle(3, 4)
# 调用函数,传入不同的实例
calculate(circle) # 输出圆的面积和周长
calculate(rectangle) # 输出矩形的面积和周长
在这个例子中,calculate函数接受一个Shape类型的对象,并调用其area和perimeter方法。由于多态性,我们可以传入Circle或Rectangle的实例,而函数会根据对象的实际类型调用相应的方法。这就是在Python中实现接口多态性的方式。
661

被折叠的 条评论
为什么被折叠?



