-1
python documentationには、__eq__
をオーバーライドし、オブジェクトが不変である場合、クラスが適切にハッシュ可能になるように、__hash__
をオーバーライドする必要があることが記載されています。実際に__eq__と__hash__を実装するための推奨方法
、私はこれを行うとき、私は多くの場合、これは多少の繰り返しであり、その他が更新されたときに1を更新し忘れるの明確な危険性がある
class MyClass(object):
def __init__(self, a, b):
self.a = a
self.b = b
def __eq__(self, other):
if type(other) is type(self):
return (self.a == other.a) and (self.b == other.b)
else:
return False
def __hash__(self):
return hash((self.a, self.b))
のようなコードで終わります。
これらのメソッドを一緒に実装する推奨方法はありますか?