我正在使用 Python
类的 set()
和 __hash__
方法来防止向集合中添加相同的哈希对象。根据 Python 数据模型文档,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
我的问题是:为什么在集合中相同的哈希对象不一样?
'Foo Bar'
而不是'Fake Name'
? - Allie Fitter