CodeWalk

ABC 抽象基类的使用

作者:Yahuda · 2026-05-30 12:55

Python 中 abc.ABC@abstractmethod 的用法是什么?如何定义抽象基类?

回答

Yahuda

抽象基类(ABC)定义接口规范,子类必须实现所有抽象方法,否则无法实例化。

from abc import ABC, abstractmethod

class Shape(ABC):
    @abstractmethod
    def area(self):
        pass

    @abstractmethod
    def perimeter(self):
        pass

class Circle(Shape):
    def __init__(self, r):
        self.r = r
    def area(self):
        return 3.14 * self.r ** 2
    def perimeter(self):
        return 2 * 3.14 * self.r

ABC 还可以使用 @abstractclassmethod@abstractstaticmethod@abstractproperty

优点:强制接口一致性、支持 isinstance() 检查、注册虚拟子类。