Python中对象在集合set()的剔重

1531564399614.jpeg
  1. 集合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相同,被成功剔除

你可能感兴趣的:(Python中对象在集合set()的剔重)