gpt4 book ai didi

python - 使用子类时类型不匹配

转载 作者:行者123 更新时间:2023-12-05 02:27:46 24 4
gpt4 key购买 nike

以下代码在 Python 严格类型检查下给出了类型不匹配错误。

class DataClass1(ABC):
@abstractmethod
def to_int(self) -> int:
return 1

class DataClass2(DataClass1):
def __init__(self, value: int):
self.value = value

def to_int(self) -> int:
return self.value

class WidgetClass(ABC):
@abstractmethod
def calculate(self, data: DataClass1) -> DataClass1:
pass

class WidgetClassImp(WidgetClass):
def calculate(self, data: DataClass2):
return data

接收 DataClass1 的子类作为参数的 WidgetClassImp 导致类型不匹配发生。这是令人惊讶的,因为 DataClass2 是 DataClass1 的子类并实现了 DataClass1 接口(interface)。

我做错了什么吗?

最佳答案

子类不是父类。因此,声明需要 Dataclass2 的 WidgetClassImp 会将函数签名更改为其父级,因此类型不匹配。您还需要将 Dataclass1 声明为参数,并在逻辑内部强制转换为 Dataclass2 或仅使用 dataclass1 成员。

关于python - 使用子类时类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72926842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com