我有一个类,它是元组的子类。我想使用该类的实例作为 set
的元素,但我收到错误消息,它是不可散列的类型。我想这是因为我重写了 __eq__ 和 __ne__ 方法。我应该怎样做才能恢复我的类型的可哈希性?我正在使用 Python 3.2。
最佳答案
比较相等的对象应具有 same hash value
因此,最好将哈希值基于用于比较相等性的属性
Adrien 的例子会更好
class test(tuple):
def __eq__(self,comp):
return self[0] == comp[0]
def __ne__(self,comp):
return self[0] != comp[0]
def __hash__(self):
return hash((self[0],))
只需利用包含我们关心的内容的元组的哈希来实现平等
关于python - 如何在Python中使元组的子类可哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12758590/