在 Python 中,抽象类是一个不能被直接实例化的类,它只能作为其他类的基类来使用。抽象类通常用于定义一组接口或者规范,这些接口或规范在具体的子类中必须被实现。
Python 中的抽象类通常是通过抽象基类(Abstract Base Class,简称 ABC)来实现的。Python 提供了 abc
模块来定义和使用抽象基类。使用 abc
模块可以定义抽象类和抽象方法,并且强制实现这些抽象方法。这样就可以实现接口和多态性了。
下面是一个简单的例子,演示了如何使用抽象基类来定义抽象类:
import abc
class Shape(metaclass=abc.ABCMeta):
@abc.abstractmethod
def area(self):
pass
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
r = Rectangle(5, 6)
print(r.area())
c = Circle(3)
print(c.area())
在这个例子中,Shape
是一个抽象基类,它定义了一个抽象方法 area
。Rectangle
和 Circle
继承了 Shape
,并且分别实现了 area
方法。在实例化 Rectangle
和 Circle
的对象后,可以调用 area
方法来计算它们的面积。注意到 Shape
不能被直接实例化。