为什么为 __eq__ 定义参数类型会导致 MyPy 类型错误?
- 论坛
- 为什么为 __eq__ 定义参数类型会导致 MyPy 类型错误?
17 浏览
为什么为 __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__
与我选择的类型进行类型检查。