- 集合set剔重
#conding:utf-8
class User: #创建一个类
def __init__(self, name,age): #初始化各个形参
self.name = name
self.age = age
def __hash__(self): #哈希算法把形参转为一个数值
return self.name.__hash__() #把形参 name 字符串,转换为数值
def __eq__(self, other): #一般都跟随__hash__()出现,把转换过来的值,进行比较
if self.age == other.age:
return True
return False
def __repr__(self):
return self.name + ";" + self.age
u1 = User('tom', '18') #创建一个对象
u2 = User('jerry', '20') #再创建一个对象
u3 = User('shuke', '22') #创建多个对象
u4 = User('tom', '90') ····
u5 = User('jerry', '90') ····
u = set() #创建集合
print(u)
u.add(u1) #把u1对象加入集合中
print(u) #输出集合 u
u.add(u2) #把u2对象加入集合中
print(u)
u.add(u3) #把u3对象加入集合中
print(u)
u.add(u4) #把u4对象加入集合中
print(u)
u.add(u5) #把u5对象加入集合中
print(u)
输出结果为:
set()
{tom;18}
{tom;18, jerry;20}
{tom;18, jerry;20, shuke;22}
{tom;18, jerry;20, shuke;22} #对象u4 没有被加入集合,因为u4的name和u1的name相同,被成功剔除
{tom;18, jerry;20, shuke;22} #对象u5 没有被加入集合,因为u5的name和u2的name相同,被成功剔除
网友评论