用户定义的类:hash()和id()以及doc

时间:2014-06-16 18:15:42

标签: python python-3.x

根据文件:

  

默认情况下,作为用户定义类实例的对象是可清除的;他们都比较不等(除了他们自己),他们的哈希值是他们的id()。

现在来自控制台:

class ABC:
  def __init__(self):
    pass

a = ABC()
id(a)
140102888165648
hash(a)
8756430510353

Shoudl not a是否具有相同的哈希值和id值?

1 个答案:

答案 0 :(得分:3)

根据__hash__()

的文件
  

默认情况下,用户定义的类具有__cmp__()__hash__()方法;   与他们,所有对象比较不平等(除了他们自己)和   x.__hash__()会从id(x)返回派生的结果。

似乎glossary已过时或不准确。


python3 __hash__的文档略有不同:

  

默认情况下,用户定义的类具有__eq__()__hash__()方法;   与他们,所有对象比较不平等(除了他们自己)和   x.__hash__()会返回适当的值,以便x == y暗示   x is yhash(x) == hash(y)

所以他们甚至删除了这样的事实,即这个值应该取决于id