-1
python documentation提到,如果您覆盖__eq__
并且该对象是不可变的,则还应该覆盖__hash__
以使该类可以正确哈希。推荐的方法来实现__eq__和__hash__
在实践中,我这样做时,我经常与代码落得像
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))
这有点重复,并没有忘记更新一个当对方更新的一个明确的风险。
是否有推荐的方法一起实施这些方法?