标签: python python-3.x
根据文件:
默认情况下,作为用户定义类实例的对象是可清除的;他们都比较不等(除了他们自己),他们的哈希值是他们的id()。
现在来自控制台:
class ABC: def __init__(self): pass a = ABC() id(a) 140102888165648 hash(a) 8756430510353
Shoudl not a是否具有相同的哈希值和id值?
a
答案 0 :(得分:3)
根据__hash__()
__hash__()
默认情况下,用户定义的类具有__cmp__()和__hash__()方法; 与他们,所有对象比较不平等(除了他们自己)和 x.__hash__()会从id(x)返回派生的结果。
__cmp__()
x.__hash__()
id(x)
似乎glossary已过时或不准确。
python3 __hash__的文档略有不同:
__hash__
默认情况下,用户定义的类具有__eq__()和__hash__()方法; 与他们,所有对象比较不平等(除了他们自己)和 x.__hash__()会返回适当的值,以便x == y暗示 x is y和hash(x) == hash(y)。
__eq__()
x == y
x is y
hash(x) == hash(y)
所以他们甚至删除了这样的事实,即这个值应该取决于id。
id