Python通过abc.ABC和@abstractmethod实现接口式设计,抽象类定义行为契约、不可实例化,纯接口式抽象类所有方法均为抽象方法且无状态,支持多继承和运行时类型检查。
Python 中没有严格意义上的“接口”关键字,但可以通过抽象基类(ABC)实现接口式设计。关键在于明确契约、约束子类行为,而非单纯语法限制。
继承 abc.ABC 类,并使用 @abstractmethod 装饰器标记必须实现的方法。抽象类本身不能被实例化,只用于规范子类结构。
pass 或文档字符串)TypeError
当不需要共享实现,仅需统一方法签名时,可定义“纯接口式抽象类”——所有方法均为 @abstractmethod,且不含任何实例属性或具体方法。
I 开头(如 IProcessor),体现接口意图(非强制,但利于团队理解)__init__ 或状态相关逻辑,保持无状态、高内聚抽象类注册后,可用 isinstance(obj, IProcessor) 判断对象是否符合某接口契约,比 hasattr 更可靠、语义更清晰。
ABCMeta.register() 将已有类“虚拟注册”为某抽象类的子类(不修改原类定义)isinstance/issubclass,不强制实现抽象方法Python 的鸭子类型是默认哲学,抽象类应作为辅助手段,而非过度约束。重点落在三点:
法配清晰 docstring,说明输入、输出、异常和业务语义