Python 3は、組み込みオブジェクト(lhs上)をユーザー定義オブジェクト(rhs上)とどのように比較しますか?
組み込みの__eq__
メソッドは、単に比較をrhs(rhs.__eq__(self)
)に委任しますか?
ドキュメントにこれに関する記述は見つかりませんでした。ドキュメントの状態:
異なる数値タイプを除いて、異なるタイプのオブジェクトは決して等しく比較されません。
それはかなり誤解を招く理由です:
class X:
def __eq__(self, rhs)
return True
x = X()
'abc' == x # True
docステートメントは次のように言い換えるべきだと思います。
異なる数値タイプを除いて、異なる組み込みタイプのオブジェクトは、等しく比較されることはありません。
さらに、ユーザー定義のクラスインスタンスとの比較がどのように実行されるかを明確にする必要があります。