大家肯定经常在一些代码中看到下面这样一行东西
from abc import ABC
这个ABC其实全称就是abstract base class,也叫做抽象基类。那么这个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.14159 * self.radius * self.radius
# 创建Circle的实例,这是可以的,因为Circle实现了area方法
circle = Circle(5)
print(circle.area()) # 输出圆的面积
# 尝试实例化Shape会抛出错误,因为它是一个抽象基类
try:
shape = Shape()
except TypeError as e:
print(e) # 输出: Can't instantiate abstract class Shape with abstract methods area
这样应该就清楚一些了。