1. 程式人生 > >day30 小面試題 去重 (考核 __eq__ 以及 __hash__ )

day30 小面試題 去重 (考核 __eq__ 以及 __hash__ )

 1 # 小面試題,要求將一個類的多個物件進行去重
 2 # 使用set方法去重,但是無法實現,因為set 需要依賴eq以及hash,
 3 # hash 雜湊的是記憶體地址, 必然不一樣
 4 # eq 比較的也是記憶體地址,必然也不一樣
 5 # 因此需要對 hash 和 eq 的功能進行更改
 6 
 7 class A:
 8     def __init__(self, name, sex, age):
 9         self.name = name
10         self.sex = sex
11         self.age = age
12     
13     def
__hash__(self): 14 return hash(self.name + self.sex) 15 16 def __eq__(self, other): 17 if self.name == other.name and self.sex == other.sex: 18 return True 19 return False 20 21 22 a = A("egg", "nan", 18) 23 b = A("egg", "nan", 18) 24 print(set((a, b))) #
set 依賴物件的hash eq 方法