【发布时间】:2016-11-20 16:20:21
【问题描述】:
我正在使用python 类的set() 和__hash__ 方法来防止在集合中添加相同的哈希对象。根据python data-model document,set() 将相同的哈希对象视为相同的对象,只需添加一次。
但它的行为不同如下:
class MyClass(object):
def __hash__(self):
return 0
result = set()
result.add(MyClass())
result.add(MyClass())
print(len(result)) # len = 2
在字符串值的情况下,它可以正常工作。
result.add('aida')
result.add('aida')
print(len(result)) # len = 1
我的问题是:为什么相同的哈希对象在集合中不一样?
【问题讨论】:
标签: python python-3.x hash set python-datamodel