【发布时间】:2017-12-23 04:45:32
【问题描述】:
python documentation 提到,如果您覆盖 __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))
这有点重复,很明显有可能在更新另一个时忘记更新。
有没有推荐的方式来一起实现这些方法?
【问题讨论】: