__hash__() should return an integer. The only required property is that objects which compare equal have the same hash value; it is advised to somehow mix together (e.g. using exclusive or) the hash values for the components of the object that also play a part in comparison of objects.
Hashing是以可重复的方式将一些大量数据转换成更小数量(通常是单个整数)的过程,以便可以在恒定时间(
O(1)
)的表中查找它,这对于高性能算法和数据结构很重要。Immutability是这样一种想法,即对象在创建后不会以某种重要方式发生更改,特别是以任何可能更改该对象哈希值的方式。
这两种想法是相关的,因为用作散列键的对象通常必须是不可变的,这样它们的散列值就不会改变。如果允许它进行更改,则该对象在数据结构(如哈希表)中的位置将发生更改,然后哈希效率的整个目的将被破坏。
要真正理解这个想法,你应该尝试用C/C++语言来实现你自己的哈希表,或者读取^ {< CD2>}类的java实现。在Python中,tuple是不可变的,但只有当它的所有元素都是可哈希的时,tuple才是可哈希的。
哈希类型
从技术上讲,hashable意味着类定义
__hash__()
。根据文件:我认为对于Python内置类型,所有的散列类型也是不可变的。
虽然定义了
__hash__()
的可变对象是困难的,但也不是不可能的。相关问题 更多 >
编程相关推荐