假设我写了一个类,但没有__hash__
为它定义一个类。然后根据文档__hash__(self)
默认为id(self)
(的内存地址) 。self
但是我没有在文档中看到如何使用这个值。
因此,如果 my is __hash__
simple return 1
,这将导致我的类的所有实例的哈希相同,它们都会被分桶到相同的底层哈希桶中(我假设它是用 C 实现的)。但是,这并不意味着 的返回值__hash__
被用作在这个底层哈希表中对元素进行 bin 的键。
所以真的,我的问题是:返回的值会发生什么__hash__
?它是直接用作键,还是它的散列(或对其执行的一些其他计算的结果)用作散列表的键?
万一这很重要,我在 python2.7
编辑:为了澄清,我不是在问如何处理哈希冲突。在 python 中,这似乎是通过线性链接完成的。相反,我问的是如何将返回值__hash__
转换为相应存储桶的内存地址(?)。