python - 如何在Python中使元组的子类可哈希?

标签 python

我有一个类,它是元组的子类。我想使用该类的实例作为 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/

相关文章:

python - 完全禁用 Tensorflow 日志记录

python - 从 QLineEdit 读取文本作为 Qmenu 选项的子菜单

python - 如何在matplotlib绘图的xlabel中打印10K,20K......1M

python - 如何避免与 makedirs 的竞争条件?

python - For 循环迭代,范围从索引 1 重新开始

python - 在嵌套字典中查找最大值并返回键

python - 将日期时间列表拆分为天数

python - 如何遍历给定目录中的文件?

python - `\x1b(B` 有什么作用?

python - 语法错误: print doesn't work in eval() [duplicate]