【发布时间】:2011-04-29 15:38:50
【问题描述】:
在实现具有多个属性的类时(如下面的玩具示例),处理散列的最佳方法是什么?
我猜__eq__和__hash__应该是一致的,但是如何实现一个能够处理所有属性的合适的散列函数呢?
class AClass:
def __init__(self):
self.a = None
self.b = None
def __eq__(self, other):
return other and self.a == other.a and self.b == other.b
def __ne__(self, other):
return not self.__eq__(other)
def __hash__(self):
return hash((self.a, self.b))
我在this question 上读到元组是可散列的,所以我想知道上面的例子是否合理。是吗?
【问题讨论】:
-
只要确保在一个元组上使用
hash()与__eq__()和朋友中比较的元素完全相同(就像你所做的那样),你就可以开始了。