为什么为 __eq__ 定义参数类型会导致 MyPy 类型错误?

17 浏览
0 Comments

为什么为 __eq__ 定义参数类型会导致 MyPy 类型错误?

我正在使用Python 3.5.1和最新发布的MyPy v0.4.1静态类型分析器。

我有一些更复杂的代码,我已经简化成了这个最简单的Python类,以便重现错误:

class MyObject(object):
    def __init__(self, value: int=5) -> None:
        self.value = value
    def __eq__(self, other: MyObject) -> bool:
        return self.value == other.value

运行类型检查器mypy test.py会产生以下错误:

test.py: 注意: 在类 "MyObject" 中:
test.py:5: 错误: "__eq__" 的第一个参数与父类型 "object" 不兼容

根据这些文档,我的理论是.__eq__(...).__ne__(...)object上已经定义了参数类型,这与我的子类重新定义的这些类型冲突。我的问题是如何定义这些类型,以确保__eq__与我选择的类型进行类型检查。

0