私は 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__
して、選択した型で型チェックされていることを確認する方法です。