1. 程式人生 > >day30 __hash__ 計算雜湊值

day30 __hash__ 計算雜湊值

hash()  # __hash__
雜湊的時候會根據記憶體地址進行雜湊,因為地址不同所以雜湊的值也不同,哪怕是完全一樣子的屬性得出的雜湊值也不一樣
因此存在需要某些時刻期望屬性相同得出相同雜湊值
可以控制物件的雜湊值是否相等,或者規定改變

 1 class B:
 2     def __init__(self,name,sex):
 3         self.name = name
 4         self.sex = sex
 5 a = B("yangtuo","tiancai")
 6 b = B("yangtuo","tiancai")
 7 # 預設是雜湊記憶體地址
 8
print(a) # <__main__.B object at 0x000000000251D240> 9 print(b) # <__main__.B object at 0x000000000251D4E0> 10 print(hash(a)==hash(b)) # False

11 class A: 12 def __init__(self,name,sex): 13 self.name = name 14 self.sex = sex 15 def __hash__(self): 16 return hash(self.name + self.sex)
17 a = A("suyang","") 18 b = A("suyang","") 19 print(hash(a)) # -7714351582186626821 20 print(hash(b)) # -7714351582186626821 21 print(hash(a)==hash(b)) # True