#一个员工类,创建了300个对象,假设当name gender相同时则认为是同一个人,请给这300个对象去重
class Employee:
def __init__(self, name, age ,gender):
self.name = name
self.age = age
self.gender = gender
def __hash__(self):
return hash("%s%s" % (self.name, self.gender))
def __eq__(self, other):
if self.name == other.name and self.gender == other.gender:
return True
return False
li =[]
for i in range(100):
li.append(Employee('sunxiao', i, "male"))
for i in range(100):
li.append(Employee('ruhua', i, "female"))
for i in range(100):
li.append(Employee('taibai', i, "male"))
#set底层实现逻辑,实际去调用转化对象的类的__hash__方法,如果不同则写入,如果是相同则通过
#__eq__方法判断是否相同,如果相同则不再写入,如果不同则写入
result = set(li)
for i in result:
print(i.__dict__)
print(result)