@abstractmethod
是 Python 中 abc
模块(Abstract Base Classes)提供的一个装饰器,用于声明抽象方法。抽象方法是指在抽象类中声明但没有提供具体实现的方法,而是由其子类提供具体实现。
使用 @abstractmethod
装饰器可以使得子类在继承抽象类时必须实现被标记为抽象方法的接口,否则会引发 TypeError
。下面是一个简单的例子:
from abc import ABC, abstractmethod
class Shape(ABC): # 抽象类
@abstractmethod
def area(self):
pass
class Circle(Shape): # Circle 是 Shape 的子类,必须实现 area 方法
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius**2
# 如果不实现抽象方法 area,将会引发 TypeError
# class Square(Shape):
# pass
在这个例子中,Shape
是一个抽象类,其中包含一个抽象方法 area
。Circle
类是 Shape
的子类,它必须提供具体实现以满足抽象方法的要求。如果尝试创建一个没有提供 area
方法实现的子类,例如 Square
,将引发 TypeError
。
使用抽象类和抽象方法的目的是为了强制子类提供特定的接口,以确保在类层次结构中的正确实现。这对于建立可靠的类继承关系和约定非常有用。