You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中实现Protocol的子类能否包含额外方法?

问题解答

1. Provider_1_Transferrer和Provider_2_Transferrer属于Transferrer Protocol的实现吗?

是的,这两个类完全符合Transferrer Protocol的要求。Python的Protocol基于结构子类型(静态鸭子类型),只要类实现了Protocol中声明的所有方法(方法名、参数签名与Protocol定义一致),就会被视为该Protocol的实现。示例中的两个类都完整实现了extract_data、transform_data、load_data三个方法,满足Protocol的核心要求。

2. 子类中的额外方法会使其不符合Protocol要求吗?

不会。Protocol只强制要求实现它定义的方法集合,类中额外添加的方法(比如示例里的provider_1_specific_cleaning_subprocess和provider_2_specific_cleaning_subprocess)完全不影响对Protocol的兼容性。这种额外方法正是为了实现数据源专属逻辑而设计的,完全符合你通过Protocol适配多数据源、保留ETL流程结构的需求。

额外补充:定义Protocol更规范的方式是使用typing.Protocol(Python 3.8+),无需抛出NotImplementedError,只需声明方法签名即可,静态类型检查工具(如mypy)能更好地识别:

from typing import Protocol

class Transferrer(Protocol):
    def extract_data(self) -> any:
        ...
    def transform_data(self) -> any:
        ...
    def load_data(self) -> None:
        ...

内容的提问来源于stack exchange,提问作者Jesse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:54:19