Я использую 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: note: In class "MyObject":
test.py:5: error: Argument 1 of "__eq__" incompatible with supertype "object"
Моя теория, основанная на этих документах, заключается в том, что __eq__
и __ne__
на объекте уже определены типы, которые конфликтуют с переопределением этих типов моим подклассом. Мой вопрос в том, как определить эти типы, чтобы убедиться, что __eq__
проверяется на соответствие выбранному мной типу.