これはおそらく非常に基本的なことですが、次のとおりです。
同じクラスのオブジェクトであるため、呼び出すXとデバッガーがクラスメソッドで停止しますが、呼び出しは停止しませんか?Ynot x == y__eq__x != y
何!=をチェックしますか?is not(参照チェック)と同等ですか?
これはおそらく非常に基本的なことですが、次のとおりです。
同じクラスのオブジェクトであるため、呼び出すXとデバッガーがクラスメソッドで停止しますが、呼び出しは停止しませんか?Ynot x == y__eq__x != y
何!=をチェックしますか?is not(参照チェック)と同等ですか?
オペレーターは特別なメソッドを!=呼び出します。__ne__を定義するクラスは、逆を行うメソッド__eq__も定義する必要があります。__ne__
__eq__、__ne__、およびを提供する典型的なパターンは__hash__次のようになります。
class SomeClass(object):
# ...
def __eq__(self, other):
if not isinstance(other, SomeClass):
return NotImplemented
return self.attr1 == other.attr1 and self.attr2 == other.attr2
def __ne__(self, other):
return not (self == other)
# if __hash__ is not needed, write __hash__ = None and it will be
# automatically disabled
def __hash__(self):
return hash((self.attr1, self.attr2))