在 Python 中,abc
模块是 Abstract Base Classes(抽象基类)的缩写。抽象基类是一种特殊的类,它不能被实例化,而是用于指导其他类应该如何实现某些方法。
在 abc
模块中,有一个 ABC
类,它是所有抽象基类的基类。通过继承 ABC
类,可以定义抽象方法,并使用装饰器来标记哪些方法是抽象的。其他类可以通过继承这些抽象基类来确保它们实现了指定的抽象方法。
以下是一个简单的例子:
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius * self.radius
class Square(Shape):
def __init__(self, side):
self.side = side
def area(self):
return self.side * self.side
# 这里将无法实例化 Shape 类,因为它包含一个抽象方法 area。
# 如果一个类继承自 Shape 但没有提供 area 方法的具体实现,也会报错。
# s = Shape() # 会抛出 TypeError
# 但是可以实例化 Circle 和 Square。
circle = Circle(5)
square = Square(4)
print(circle.area()) # 输出:78.5
print(square.area()) # 输出:16
在这个例子中,Shape
类是一个抽象基类,它包含一个抽象方法 area
。Circle
和 Square
类继承自 Shape
类,并实现了 area
方法。这确保了任何继承自 Shape
的类都必须实现 area
方法。