可散列对象的定义
(1)支持 hash()
函数,并且通过__hash__()
方法得到的散列值是不变的
(2)支持通过__eq__()
方法检测相等性
(3)若a==b
为真,则hash(a)==hash(b)
也为真
Python 中的可散列对象和不可散列对象
-
可散列对象
- Python 中不可变的对象是可以散列的如数值类型,字符串,元组和
forzenset
- 所有由用户自定义的对象都是可散列的,它们的散列值是由
id()
获取,并且都是不相等的。
- Python 中不可变的对象是可以散列的如数值类型,字符串,元组和
-
不可散列对象
可变类型的对象是不可散列的,如列表、字典和集合
自定义对象的散列特性
-
对于自定义的类型,即使内容一样,散列值也不一样
class A: def __init__(self, array): self.array = array a = A([