哈希值的语法
__hash__ 求hash值的 底层数据结构为hash表, hash()函数 hash表存储数据的原理: 1,计算哈希值,决定hash表中存储的位置 2.与当前位置其他对象去比较,如果相等,则不存储,不等,才存储进来 __eq__
print(hash('a')) class Student: def __init__(self,id,name,age): self.id=id self.name=name self.age=age def __hash__(self): #根据指定的元素计算哈希值,object中的hash是基于地址进行计算的 return hash(self.id) #按指定的内容去比较 def __eq__(self, other): return self.id==other.id stu1 = Student(1001,'张三',19) stu2 = Student(1001, '张三', 19) stu3 = Student(1001, '张三', 19) print(hash(stu1)) set1=set() set1.add(stu1) set1.add(stu2) set1.add(stu3) #思考?可以存储几个对象进来? print(set1)
运行结果后有多个地址
919663390355993582
1001
{<__main__.Student object at 0x0000000002987588>}