美文网首页python学习之路
python中的__eq__()方法和__hash__()函数

python中的__eq__()方法和__hash__()函数

作者: Alcazar | 来源:发表于2019-06-20 10:13 被阅读31次
    关于 eqhash

    __hash__实际上是返回一个int值,用来唯一标记这个对象。
    用户自定义类中,如果你没有实现__eq____hash__函数,那么class会继承到默认的__eq____hash__函数。


    先来看一下官网上关于这两者的介绍:
    官网:hash的介绍

    摘录:

    (1)Called by built-in function hash() and for operations on members of hashed collections including set, frozenset, and dict. hash() should return an integer. The only required property is that objects which compare equal have the same hash value; it is advised to mix together the hash values of the components of the object that also play a part in comparison of objects by packing them into a tuple and hashing the tuple. Example:
    def hash(self):
    return hash((self.name, self.nick, self.color))

    【解释】:
    当可哈希集合(set,frozenset,dict)调用hash函数时,应该返回一个int值。唯一的要求就是,如果判断两个对象相等,那么他们的hash值也应该相等。当比较两个对象相等时是使用对象的成员来比较时,建议要把成员弄进元祖里,再得到这个元祖的hash值来比较。


    摘录:

    (2)If a class does not define an eq() method it should not define a hash() operation either; if it defines eq() but not hash(), its instances will not be usable as items in hashable collections. If a class defines mutable objects and implements an eq() method, it should not implement hash(), since the implementation of hashable collections requires that a key’s hash value is immutable (if the object’s hash value changes, it will be in the wrong hash bucket).

    【注释】当class没有定义__eq__()方法时,那么它也不应该定义__hash__()方法。如果它定义了__eq__()方法,却没有定义__hash__()方法,那么这个类的实例就不能在可哈希集合使用。如果一个类定义了一个可变对象(这里应该是指class的成员之一为可变对象),且implement了__eq__()方法,那么这个类就不应该implement __hash__()方法,因为可哈希对象的实现(implement )要求键值key的hash值是不变的(如果一个对象的hash值改变了,那么它会被放在错误的hash桶里

    参考文档:
    https://www.cnblogs.com/luxiangyu111/p/9389399.html
    https://blog.csdn.net/lnotime/article/details/81194962


    • 写了__eq__()方法的类会隐式的把__hash__赋为None。当获取实例的哈希值即用到了__hash__()方法时(只有上文提到的四种情况会用到这个方法)就会抛出TypeError错误,上文例子演示过了。并且isinstance判断类型也能正确判断。

    • 用户定义的类中都有默认的__eq____hash__方法;有了它,所有的对象实例都是不等的(除非是自己和自己比较),在做x == y比较时是和这个等价的hash(x) == hash(y)

    • 如果一个类重写了__eq__()方法还需要能使用父类的__hash__()方法;;如果一个类没有重写__eq__()方法而又需要让__hash__()失效,那就要明确的赋值为None,像list、set等的源码那样

    • 内容相同,hash计算的结果,必须相同;
      内容不同,hash值有可能相同。


    附个代码:

    # 对象的属性 : 姓名 性别 年龄 部门
    # 员工管理系统
    # 内部转岗 python开发 - go开发
    # 姓名 性别 年龄 新的部门
    # alex None 83 python
    # alex None 85 luffy
    
    # 1000个员工
    # 如果几个员工对象的姓名和性别相同,这是一个人
    # 请对这1000个员工做去重
    
    class Employee:
        def __init__(self, name, age, sex, partment):
            self.name = name
            self.age = age
            self.sex = sex
            self.partment = partment
    
        def __hash__(self):
            return hash('%s%s' % (self.name, self.sex))
    
        def __eq__(self, other):
            if self.name == other.name and self.sex == other.sex:
                return True
    
    
    employ_lst = []
    for i in range(200):
        employ_lst.append(Employee('Zurich', 6, 'male', 'python'))
    for i in range(200):
        employ_lst.append(Employee('Alzacar', 8, 'male', 'python'))
    for i in range(200):
        employ_lst.append(Employee('tao', 9, 'male', 'python'))
    
    # print(employ_lst)
    employ_set = set(employ_lst)
    for person in employ_set:
        print(person.__dict__)
    print(employ_lst)
    

    set集合的去重机制 : 先调用hash,再调用eq,eq不是每次都触发,只有hash值相等的时候才会触发
    此处去重只是set内部的去重,并不改变对象本身
    output:

    {'name': 'tao', 'age': 9, 'sex': 'male', 'partment': 'python'}
    {'name': 'Alzacar', 'age': 8, 'sex': 'male', 'partment': 'python'}
    {'name': 'Zurich', 'age': 6, 'sex': 'male', 'partment': 'python'}
    [<__main__.Employee object at 0x000002054DF97588>, <__main__.Employee object at 0x000002054DF975F8>, <__main__.Employee object at 0x000002054DF97630>, <__main__.Employee object at 0x000002054DF97668>, <__main__.Employee object at 0x000002054DF976A0>, <__main__.Employee object at 0x000002054DF976D8>, <__main__.Employee object at 0x000002054DF97710>, <__main__.Employee object at 0x000002054DF97748>, <__main__.Employee object at 0x000002054DF97780>, <__main__.Employee object at 0x000002054DF977B8>, <__main__.Employee object at 0x000002054DF977F0>, <__main__.Employee object at 0x000002054DF97828>, <__main__.Employee object at 0x000002054DF97860>, <__main__.Employee object at 0x000002054DF97898>, <__main__.Employee object at 0x000002054DF978D0>, <__main__.Employee object at 0x000002054DF97908>, <__main__.Employee object at 0x000002054DF97940>, <__main__.Employee object at 0x000002054DF97978>, <__main__.Employee object at 0x000002054DF979B0>, <__main__.Employee object at 0x000002054DF979E8>, <__main__.Employee object at 0x000002054DF97A20>, <__main__.Employee object at 0x000002054DF97A58>, <__main__.Employee object at 0x000002054DF97A90>, <__main__.Employee object at 0x000002054DF97AC8>, <__main__.Employee object at 0x000002054DF97B00>, <__main__.Employee object at 0x000002054DF97B38>, <__main__.Employee object at 0x000002054DF97B70>, <__main__.Employee object at 0x000002054DF97BA8>, <__main__.Employee object at 0x000002054DF97BE0>, <__main__.Employee object at 0x000002054DF97C18>, <__main__.Employee object at 0x000002054DF97C50>, <__main__.Employee object at 0x000002054DF97C88>, <__main__.Employee object at 0x000002054DF97CC0>, <__main__.Employee object at 0x000002054DF97CF8>, <__main__.Employee object at 0x000002054DF97D30>, <__main__.Employee object at 0x000002054DF97D68>, <__main__.Employee object at 0x000002054DF97DA0>, <__main__.Employee object at 0x000002054DF97DD8>, <__main__.Employee object at 0x000002054DF97E10>, <__main__.Employee object at 0x000002054DF97E48>, <__main__.Employee object at 0x000002054DF97E80>, <__main__.Employee object at 0x000002054DF97EB8>, <__main__.Employee object at 0x000002054DF97EF0>, <__main__.Employee object at 0x000002054DF97F28>, <__main__.Employee object at 0x000002054DF97F60>, <__main__.Employee object at 0x000002054DF97F98>, <__main__.Employee object at 0x000002054DF97FD0>, <__main__.Employee object at 0x000002054DFA4048>, <__main__.Employee object at 0x000002054DFA4080>, <__main__.Employee object at 0x000002054DFA40B8>, <__main__.Employee object at 0x000002054DFA40F0>, <__main__.Employee object at 0x000002054DFA4128>, <__main__.Employee object at 0x000002054DFA4160>, <__main__.Employee object at 0x000002054DFA4198>, <__main__.Employee object at 0x000002054DFA41D0>, <__main__.Employee object at 0x000002054DFA4208>, <__main__.Employee object at 0x000002054DFA4240>, <__main__.Employee object at 0x000002054DFA4278>, <__main__.Employee object at 0x000002054DFA42B0>, <__main__.Employee object at 0x000002054DFA42E8>, <__main__.Employee object at 0x000002054DFA4320>, <__main__.Employee object at 0x000002054DFA4358>, <__main__.Employee object at 0x000002054DFA4390>, <__main__.Employee object at 0x000002054DFA43C8>, <__main__.Employee object at 0x000002054DFA4400>, <__main__.Employee object at 0x000002054DFA4438>, <__main__.Employee object at 0x000002054DFA4470>, <__main__.Employee object at 0x000002054DFA44A8>, <__main__.Employee object at 0x000002054DFA44E0>, <__main__.Employee object at 0x000002054DFA4518>, <__main__.Employee object at 0x000002054DFA4550>, <__main__.Employee object at 0x000002054DFA4588>, <__main__.Employee object at 0x000002054DFA45C0>, <__main__.Employee object at 0x000002054DFA45F8>, <__main__.Employee object at 0x000002054DFA4630>, <__main__.Employee object at 0x000002054DFA4668>, <__main__.Employee object at 0x000002054DFA46A0>, <__main__.Employee object at 0x000002054DFA46D8>, <__main__.Employee object at 0x000002054DFA4710>, <__main__.Employee object at 0x000002054DFA4748>, <__main__.Employee object at 0x000002054DFA4780>, <__main__.Employee object at 0x000002054DFA47B8>, <__main__.Employee object at 0x000002054DFA47F0>, <__main__.Employee object at 0x000002054DFA4828>, <__main__.Employee object at 0x000002054DFA4860>, <__main__.Employee object at 0x000002054DFA4898>, <__main__.Employee object at 0x000002054DFA48D0>, <__main__.Employee object at 0x000002054DFA4908>, <__main__.Employee object at 0x000002054DFA4940>, <__main__.Employee object at 0x000002054DFA4978>, <__main__.Employee object at 0x000002054DFA49B0>, <__main__.Employee object at 0x000002054DFA49E8>, <__main__.Employee object at 0x000002054DFA4A20>, <__main__.Employee object at 0x000002054DFA4A58>, <__main__.Employee object at 0x000002054DFA4A90>, <__main__.Employee object at 0x000002054DFA4AC8>, <__main__.Employee object at 0x000002054DFA4B00>, <__main__.Employee object at 0x000002054DFA4B38>, <__main__.Employee object at 0x000002054DFA4B70>, <__main__.Employee object at 0x000002054DFA4BA8>, <__main__.Employee object at 0x000002054DFA4BE0>, <__main__.Employee object at 0x000002054DFA4C18>, <__main__.Employee object at 0x000002054DFA4C50>, <__main__.Employee object at 0x000002054DFA4C88>, <__main__.Employee object at 0x000002054DFA4CC0>, <__main__.Employee object at 0x000002054DFA4CF8>, <__main__.Employee object at 0x000002054DFA4D30>, <__main__.Employee object at 0x000002054DFA4D68>, <__main__.Employee object at 0x000002054DFA4DA0>, <__main__.Employee object at 0x000002054DFA4DD8>, <__main__.Employee object at 0x000002054DFA4E10>, <__main__.Employee object at 0x000002054DFA4E48>, <__main__.Employee object at 0x000002054DFA4E80>, <__main__.Employee object at 0x000002054DFA4EB8>, <__main__.Employee object at 0x000002054DFA4EF0>, <__main__.Employee object at 0x000002054DFA4F28>, <__main__.Employee object at 0x000002054DFA4F60>, <__main__.Employee object at 0x000002054DFA4F98>, <__main__.Employee object at 0x000002054DFA4FD0>, <__main__.Employee object at 0x000002054DFAB048>, <__main__.Employee object at 0x000002054DFAB080>, <__main__.Employee object at 0x000002054DFAB0B8>, <__main__.Employee object at 0x000002054DFAB0F0>, <__main__.Employee object at 0x000002054DFAB128>, <__main__.Employee object at 0x000002054DFAB160>, <__main__.Employee object at 0x000002054DFAB198>, <__main__.Employee object at 0x000002054DFAB1D0>, <__main__.Employee object at 0x000002054DFAB208>, <__main__.Employee object at 0x000002054DFAB240>, <__main__.Employee object at 0x000002054DFAB278>, <__main__.Employee object at 0x000002054DFAB2B0>, <__main__.Employee object at 0x000002054DFAB2E8>, <__main__.Employee object at 0x000002054DFAB320>, <__main__.Employee object at 0x000002054DFAB358>, <__main__.Employee object at 0x000002054DFAB390>, <__main__.Employee object at 0x000002054DFAB3C8>, <__main__.Employee object at 0x000002054DFAB400>, <__main__.Employee object at 0x000002054DFAB438>, <__main__.Employee object at 0x000002054DFAB470>, <__main__.Employee object at 0x000002054DFAB4A8>, <__main__.Employee object at 0x000002054DFAB4E0>, <__main__.Employee object at 0x000002054DFAB518>, <__main__.Employee object at 0x000002054DFAB550>, <__main__.Employee object at 0x000002054DFAB588>, <__main__.Employee object at 0x000002054DFAB5C0>, <__main__.Employee object at 0x000002054DFAB5F8>, <__main__.Employee object at 0x000002054DFAB630>, <__main__.Employee object at 0x000002054DFAB668>, <__main__.Employee object at 0x000002054DFAB6A0>, <__main__.Employee object at 0x000002054DFAB6D8>, <__main__.Employee object at 0x000002054DFAB710>, <__main__.Employee object at 0x000002054DFAB748>, <__main__.Employee object at 0x000002054DFAB780>, <__main__.Employee object at 0x000002054DFAB7B8>, <__main__.Employee object at 0x000002054DFAB7F0>, <__main__.Employee object at 0x000002054DFAB828>, <__main__.Employee object at 0x000002054DFAB860>, <__main__.Employee object at 0x000002054DFAB898>, <__main__.Employee object at 0x000002054DFAB8D0>, <__main__.Employee object at 0x000002054DFAB908>, <__main__.Employee object at 0x000002054DFAB940>, <__main__.Employee object at 0x000002054DFAB978>, <__main__.Employee object at 0x000002054DFAB9B0>, <__main__.Employee object at 0x000002054DFAB9E8>, <__main__.Employee object at 0x000002054DFABA20>, <__main__.Employee object at 0x000002054DFABA58>, <__main__.Employee object at 0x000002054DFABA90>, <__main__.Employee object at 0x000002054DFABAC8>, <__main__.Employee object at 0x000002054DFABB00>, <__main__.Employee object at 0x000002054DFABB38>, <__main__.Employee object at 0x000002054DFABB70>, <__main__.Employee object at 0x000002054DFABBA8>, <__main__.Employee object at 0x000002054DFABBE0>, <__main__.Employee object at 0x000002054DFABC18>, <__main__.Employee object at 0x000002054DFABC50>, <__main__.Employee object at 0x000002054DFABC88>, <__main__.Employee object at 0x000002054DFABCC0>, <__main__.Employee object at 0x000002054DFABCF8>, <__main__.Employee object at 0x000002054DFABD30>, <__main__.Employee object at 0x000002054DFABD68>, <__main__.Employee object at 0x000002054DFABDA0>, <__main__.Employee object at 0x000002054DFABDD8>, <__main__.Employee object at 0x000002054DFABE10>, <__main__.Employee object at 0x000002054DFABE48>, <__main__.Employee object at 0x000002054DFABE80>, <__main__.Employee object at 0x000002054DFABEB8>, <__main__.Employee object at 0x000002054DFABEF0>, <__main__.Employee object at 0x000002054DFABF28>, <__main__.Employee object at 0x000002054DFABF60>, <__main__.Employee object at 0x000002054DFABF98>, <__main__.Employee object at 0x000002054DFABFD0>, <__main__.Employee object at 0x000002054DFAD048>, <__main__.Employee object at 0x000002054DFAD080>, <__main__.Employee object at 0x000002054DFAD0B8>, <__main__.Employee object at 0x000002054DFAD0F0>, <__main__.Employee object at 0x000002054DFAD128>, <__main__.Employee object at 0x000002054DFAD160>, <__main__.Employee object at 0x000002054DFAD198>, <__main__.Employee object at 0x000002054DFAD1D0>, <__main__.Employee object at 0x000002054DFAD208>, <__main__.Employee object at 0x000002054DFAD240>, <__main__.Employee object at 0x000002054DFAD278>, <__main__.Employee object at 0x000002054DFAD2B0>, <__main__.Employee object at 0x000002054DFAD2E8>, <__main__.Employee object at 0x000002054DFAD320>, <__main__.Employee object at 0x000002054DFAD358>, <__main__.Employee object at 0x000002054DFAD390>, <__main__.Employee object at 0x000002054DFAD3C8>, <__main__.Employee object at 0x000002054DFAD400>, <__main__.Employee object at 0x000002054DFAD438>, <__main__.Employee object at 0x000002054DFAD470>, <__main__.Employee object at 0x000002054DFAD4A8>, <__main__.Employee object at 0x000002054DFAD4E0>, <__main__.Employee object at 0x000002054DFAD518>, <__main__.Employee object at 0x000002054DFAD550>, <__main__.Employee object at 0x000002054DFAD588>, <__main__.Employee object at 0x000002054DFAD5C0>, <__main__.Employee object at 0x000002054DFAD5F8>, <__main__.Employee object at 0x000002054DFAD630>, <__main__.Employee object at 0x000002054DFAD668>, <__main__.Employee object at 0x000002054DFAD6A0>, <__main__.Employee object at 0x000002054DFAD6D8>, <__main__.Employee object at 0x000002054DFAD710>, <__main__.Employee object at 0x000002054DFAD748>, <__main__.Employee object at 0x000002054DFAD780>, <__main__.Employee object at 0x000002054DFAD7B8>, <__main__.Employee object at 0x000002054DFAD7F0>, <__main__.Employee object at 0x000002054DFAD828>, <__main__.Employee object at 0x000002054DFAD860>, <__main__.Employee object at 0x000002054DFAD898>, <__main__.Employee object at 0x000002054DFAD8D0>, <__main__.Employee object at 0x000002054DFAD908>, <__main__.Employee object at 0x000002054DFAD940>, <__main__.Employee object at 0x000002054DFAD978>, <__main__.Employee object at 0x000002054DFAD9B0>, <__main__.Employee object at 0x000002054DFAD9E8>, <__main__.Employee object at 0x000002054DFADA20>, <__main__.Employee object at 0x000002054DFADA58>, <__main__.Employee object at 0x000002054DFADA90>, <__main__.Employee object at 0x000002054DFADAC8>, <__main__.Employee object at 0x000002054DFADB00>, <__main__.Employee object at 0x000002054DFADB38>, <__main__.Employee object at 0x000002054DFADB70>, <__main__.Employee object at 0x000002054DFADBA8>, <__main__.Employee object at 0x000002054DFADBE0>, <__main__.Employee object at 0x000002054DFADC18>, <__main__.Employee object at 0x000002054DFADC50>, <__main__.Employee object at 0x000002054DFADC88>, <__main__.Employee object at 0x000002054DFADCC0>, <__main__.Employee object at 0x000002054DFADCF8>, <__main__.Employee object at 0x000002054DFADD30>, <__main__.Employee object at 0x000002054DFADD68>, <__main__.Employee object at 0x000002054DFADDA0>, <__main__.Employee object at 0x000002054DFADDD8>, <__main__.Employee object at 0x000002054DFADE10>, <__main__.Employee object at 0x000002054DFADE48>, <__main__.Employee object at 0x000002054DFADE80>, <__main__.Employee object at 0x000002054DFADEB8>, <__main__.Employee object at 0x000002054DFADEF0>, <__main__.Employee object at 0x000002054DFADF28>, <__main__.Employee object at 0x000002054DFADF60>, <__main__.Employee object at 0x000002054DFADF98>, <__main__.Employee object at 0x000002054DFADFD0>, <__main__.Employee object at 0x000002054DFB0048>, <__main__.Employee object at 0x000002054DFB0080>, <__main__.Employee object at 0x000002054DFB00B8>, <__main__.Employee object at 0x000002054DFB00F0>, <__main__.Employee object at 0x000002054DFB0128>, <__main__.Employee object at 0x000002054DFB0160>, <__main__.Employee object at 0x000002054DFB0198>, <__main__.Employee object at 0x000002054DFB01D0>, <__main__.Employee object at 0x000002054DFB0208>, <__main__.Employee object at 0x000002054DFB0240>, <__main__.Employee object at 0x000002054DFB0278>, <__main__.Employee object at 0x000002054DFB02B0>, <__main__.Employee object at 0x000002054DFB02E8>, <__main__.Employee object at 0x000002054DFB0320>, <__main__.Employee object at 0x000002054DFB0358>, <__main__.Employee object at 0x000002054DFB0390>, <__main__.Employee object at 0x000002054DFB03C8>, <__main__.Employee object at 0x000002054DFB0400>, <__main__.Employee object at 0x000002054DFB0438>, <__main__.Employee object at 0x000002054DFB0470>, <__main__.Employee object at 0x000002054DFB04A8>, <__main__.Employee object at 0x000002054DFB04E0>, <__main__.Employee object at 0x000002054DFB0518>, <__main__.Employee object at 0x000002054DFB0550>, <__main__.Employee object at 0x000002054DFB0588>, <__main__.Employee object at 0x000002054DFB05C0>, <__main__.Employee object at 0x000002054DFB05F8>, <__main__.Employee object at 0x000002054DFB0630>, <__main__.Employee object at 0x000002054DFB0668>, <__main__.Employee object at 0x000002054DFB06A0>, <__main__.Employee object at 0x000002054DFB06D8>, <__main__.Employee object at 0x000002054DFB0710>, <__main__.Employee object at 0x000002054DFB0748>, <__main__.Employee object at 0x000002054DFB0780>, <__main__.Employee object at 0x000002054DFB07B8>, <__main__.Employee object at 0x000002054DFB07F0>, <__main__.Employee object at 0x000002054DFB0828>, <__main__.Employee object at 0x000002054DFB0860>, <__main__.Employee object at 0x000002054DFB0898>, <__main__.Employee object at 0x000002054DFB08D0>, <__main__.Employee object at 0x000002054DFB0908>, <__main__.Employee object at 0x000002054DFB0940>, <__main__.Employee object at 0x000002054DFB0978>, <__main__.Employee object at 0x000002054DFB09B0>, <__main__.Employee object at 0x000002054DFB09E8>, <__main__.Employee object at 0x000002054DFB0A20>, <__main__.Employee object at 0x000002054DFB0A58>, <__main__.Employee object at 0x000002054DFB0A90>, <__main__.Employee object at 0x000002054DFB0AC8>, <__main__.Employee object at 0x000002054DFB0B00>, <__main__.Employee object at 0x000002054DFB0B38>, <__main__.Employee object at 0x000002054DFB0B70>, <__main__.Employee object at 0x000002054DFB0BA8>, <__main__.Employee object at 0x000002054DFB0BE0>, <__main__.Employee object at 0x000002054DFB0C18>, <__main__.Employee object at 0x000002054DFB0C50>, <__main__.Employee object at 0x000002054DFB0C88>, <__main__.Employee object at 0x000002054DFB0CC0>, <__main__.Employee object at 0x000002054DFB0CF8>, <__main__.Employee object at 0x000002054DFB0D30>, <__main__.Employee object at 0x000002054DFB0D68>, <__main__.Employee object at 0x000002054DFB0DA0>, <__main__.Employee object at 0x000002054DFB0DD8>, <__main__.Employee object at 0x000002054DFB0E10>, <__main__.Employee object at 0x000002054DFB0E48>, <__main__.Employee object at 0x000002054DFB0E80>, <__main__.Employee object at 0x000002054DFB0EB8>, <__main__.Employee object at 0x000002054DFB0EF0>, <__main__.Employee object at 0x000002054DFB0F28>, <__main__.Employee object at 0x000002054DFB0F60>, <__main__.Employee object at 0x000002054DFB0F98>, <__main__.Employee object at 0x000002054DFB0FD0>, <__main__.Employee object at 0x000002054DFB3048>, <__main__.Employee object at 0x000002054DFB3080>, <__main__.Employee object at 0x000002054DFB30B8>, <__main__.Employee object at 0x000002054DFB30F0>, <__main__.Employee object at 0x000002054DFB3128>, <__main__.Employee object at 0x000002054DFB3160>, <__main__.Employee object at 0x000002054DFB3198>, <__main__.Employee object at 0x000002054DFB31D0>, <__main__.Employee object at 0x000002054DFB3208>, <__main__.Employee object at 0x000002054DFB3240>, <__main__.Employee object at 0x000002054DFB3278>, <__main__.Employee object at 0x000002054DFB32B0>, <__main__.Employee object at 0x000002054DFB32E8>, <__main__.Employee object at 0x000002054DFB3320>, <__main__.Employee object at 0x000002054DFB3358>, <__main__.Employee object at 0x000002054DFB3390>, <__main__.Employee object at 0x000002054DFB33C8>, <__main__.Employee object at 0x000002054DFB3400>, <__main__.Employee object at 0x000002054DFB3438>, <__main__.Employee object at 0x000002054DFB3470>, <__main__.Employee object at 0x000002054DFB34A8>, <__main__.Employee object at 0x000002054DFB34E0>, <__main__.Employee object at 0x000002054DFB3518>, <__main__.Employee object at 0x000002054DFB3550>, <__main__.Employee object at 0x000002054DFB3588>, <__main__.Employee object at 0x000002054DFB35C0>, <__main__.Employee object at 0x000002054DFB35F8>, <__main__.Employee object at 0x000002054DFB3630>, <__main__.Employee object at 0x000002054DFB3668>, <__main__.Employee object at 0x000002054DFB36A0>, <__main__.Employee object at 0x000002054DFB36D8>, <__main__.Employee object at 0x000002054DFB3710>, <__main__.Employee object at 0x000002054DFB3748>, <__main__.Employee object at 0x000002054DFB3780>, <__main__.Employee object at 0x000002054DFB37B8>, <__main__.Employee object at 0x000002054DFB37F0>, <__main__.Employee object at 0x000002054DFB3828>, <__main__.Employee object at 0x000002054DFB3860>, <__main__.Employee object at 0x000002054DFB3898>, <__main__.Employee object at 0x000002054DFB38D0>, <__main__.Employee object at 0x000002054DFB3908>, <__main__.Employee object at 0x000002054DFB3940>, <__main__.Employee object at 0x000002054DFB3978>, <__main__.Employee object at 0x000002054DFB39B0>, <__main__.Employee object at 0x000002054DFB39E8>, <__main__.Employee object at 0x000002054DFB3A20>, <__main__.Employee object at 0x000002054DFB3A58>, <__main__.Employee object at 0x000002054DFB3A90>, <__main__.Employee object at 0x000002054DFB3AC8>, <__main__.Employee object at 0x000002054DFB3B00>, <__main__.Employee object at 0x000002054DFB3B38>, <__main__.Employee object at 0x000002054DFB3B70>, <__main__.Employee object at 0x000002054DFB3BA8>, <__main__.Employee object at 0x000002054DFB3BE0>, <__main__.Employee object at 0x000002054DFB3C18>, <__main__.Employee object at 0x000002054DFB3C50>, <__main__.Employee object at 0x000002054DFB3C88>, <__main__.Employee object at 0x000002054DFB3CC0>, <__main__.Employee object at 0x000002054DFB3CF8>, <__main__.Employee object at 0x000002054DFB3D30>, <__main__.Employee object at 0x000002054DFB3D68>, <__main__.Employee object at 0x000002054DFB3DA0>, <__main__.Employee object at 0x000002054DFB3DD8>, <__main__.Employee object at 0x000002054DFB3E10>, <__main__.Employee object at 0x000002054DFB3E48>, <__main__.Employee object at 0x000002054DFB3E80>, <__main__.Employee object at 0x000002054DFB3EB8>, <__main__.Employee object at 0x000002054DFB3EF0>, <__main__.Employee object at 0x000002054DFB3F28>, <__main__.Employee object at 0x000002054DFB3F60>, <__main__.Employee object at 0x000002054DFB3F98>, <__main__.Employee object at 0x000002054DFB3FD0>, <__main__.Employee object at 0x000002054DFB7048>, <__main__.Employee object at 0x000002054DFB7080>, <__main__.Employee object at 0x000002054DFB70B8>, <__main__.Employee object at 0x000002054DFB70F0>, <__main__.Employee object at 0x000002054DFB7128>, <__main__.Employee object at 0x000002054DFB7160>, <__main__.Employee object at 0x000002054DFB7198>, <__main__.Employee object at 0x000002054DFB71D0>, <__main__.Employee object at 0x000002054DFB7208>, <__main__.Employee object at 0x000002054DFB7240>, <__main__.Employee object at 0x000002054DFB7278>, <__main__.Employee object at 0x000002054DFB72B0>, <__main__.Employee object at 0x000002054DFB72E8>, <__main__.Employee object at 0x000002054DFB7320>, <__main__.Employee object at 0x000002054DFB7358>, <__main__.Employee object at 0x000002054DFB7390>, <__main__.Employee object at 0x000002054DFB73C8>, <__main__.Employee object at 0x000002054DFB7400>, <__main__.Employee object at 0x000002054DFB7438>, <__main__.Employee object at 0x000002054DFB7470>, <__main__.Employee object at 0x000002054DFB74A8>, <__main__.Employee object at 0x000002054DFB74E0>, <__main__.Employee object at 0x000002054DFB7518>, <__main__.Employee object at 0x000002054DFB7550>, <__main__.Employee object at 0x000002054DFB7588>, <__main__.Employee object at 0x000002054DFB75C0>, <__main__.Employee object at 0x000002054DFB75F8>, <__main__.Employee object at 0x000002054DFB7630>, <__main__.Employee object at 0x000002054DFB7668>, <__main__.Employee object at 0x000002054DFB76A0>, <__main__.Employee object at 0x000002054DFB76D8>, <__main__.Employee object at 0x000002054DFB7710>, <__main__.Employee object at 0x000002054DFB7748>, <__main__.Employee object at 0x000002054DFB7780>, <__main__.Employee object at 0x000002054DFB77B8>, <__main__.Employee object at 0x000002054DFB77F0>, <__main__.Employee object at 0x000002054DFB7828>, <__main__.Employee object at 0x000002054DFB7860>, <__main__.Employee object at 0x000002054DFB7898>, <__main__.Employee object at 0x000002054DFB78D0>, <__main__.Employee object at 0x000002054DFB7908>, <__main__.Employee object at 0x000002054DFB7940>, <__main__.Employee object at 0x000002054DFB7978>, <__main__.Employee object at 0x000002054DFB79B0>, <__main__.Employee object at 0x000002054DFB79E8>, <__main__.Employee object at 0x000002054DFB7A20>, <__main__.Employee object at 0x000002054DFB7A58>, <__main__.Employee object at 0x000002054DFB7A90>, <__main__.Employee object at 0x000002054DFB7AC8>, <__main__.Employee object at 0x000002054DFB7B00>, <__main__.Employee object at 0x000002054DFB7B38>, <__main__.Employee object at 0x000002054DFB7B70>, <__main__.Employee object at 0x000002054DFB7BA8>, <__main__.Employee object at 0x000002054DFB7BE0>, <__main__.Employee object at 0x000002054DFB7C18>, <__main__.Employee object at 0x000002054DFB7C50>, <__main__.Employee object at 0x000002054DFB7C88>, <__main__.Employee object at 0x000002054DFB7CC0>, <__main__.Employee object at 0x000002054DFB7CF8>, <__main__.Employee object at 0x000002054DFB7D30>, <__main__.Employee object at 0x000002054DFB7D68>, <__main__.Employee object at 0x000002054DFB7DA0>, <__main__.Employee object at 0x000002054DFB7DD8>, <__main__.Employee object at 0x000002054DFB7E10>, <__main__.Employee object at 0x000002054DFB7E48>, <__main__.Employee object at 0x000002054DFB7E80>, <__main__.Employee object at 0x000002054DFB7EB8>, <__main__.Employee object at 0x000002054DFB7EF0>, <__main__.Employee object at 0x000002054DFB7F28>, <__main__.Employee object at 0x000002054DFB7F60>, <__main__.Employee object at 0x000002054DFB7F98>, <__main__.Employee object at 0x000002054DFB7FD0>, <__main__.Employee object at 0x000002054DFB9048>, <__main__.Employee object at 0x000002054DFB9080>, <__main__.Employee object at 0x000002054DFB90B8>, <__main__.Employee object at 0x000002054DFB90F0>, <__main__.Employee object at 0x000002054DFB9128>, <__main__.Employee object at 0x000002054DFB9160>, <__main__.Employee object at 0x000002054DFB9198>, <__main__.Employee object at 0x000002054DFB91D0>, <__main__.Employee object at 0x000002054DFB9208>, <__main__.Employee object at 0x000002054DFB9240>, <__main__.Employee object at 0x000002054DFB9278>, <__main__.Employee object at 0x000002054DFB92B0>, <__main__.Employee object at 0x000002054DFB92E8>, <__main__.Employee object at 0x000002054DFB9320>, <__main__.Employee object at 0x000002054DFB9358>, <__main__.Employee object at 0x000002054DFB9390>, <__main__.Employee object at 0x000002054DFB93C8>, <__main__.Employee object at 0x000002054DFB9400>, <__main__.Employee object at 0x000002054DFB9438>, <__main__.Employee object at 0x000002054DFB9470>, <__main__.Employee object at 0x000002054DFB94A8>, <__main__.Employee object at 0x000002054DFB94E0>, <__main__.Employee object at 0x000002054DFB9518>, <__main__.Employee object at 0x000002054DFB9550>, <__main__.Employee object at 0x000002054DFB9588>, <__main__.Employee object at 0x000002054DFB95C0>, <__main__.Employee object at 0x000002054DFB95F8>, <__main__.Employee object at 0x000002054DFB9630>, <__main__.Employee object at 0x000002054DFB9668>, <__main__.Employee object at 0x000002054DFB96A0>, <__main__.Employee object at 0x000002054DFB96D8>, <__main__.Employee object at 0x000002054DFB9710>, <__main__.Employee object at 0x000002054DFB9748>, <__main__.Employee object at 0x000002054DFB9780>, <__main__.Employee object at 0x000002054DFB97B8>, <__main__.Employee object at 0x000002054DFB97F0>, <__main__.Employee object at 0x000002054DFB9828>, <__main__.Employee object at 0x000002054DFB9860>, <__main__.Employee object at 0x000002054DFB9898>, <__main__.Employee object at 0x000002054DFB98D0>, <__main__.Employee object at 0x000002054DFB9908>, <__main__.Employee object at 0x000002054DFB9940>, <__main__.Employee object at 0x000002054DFB9978>, <__main__.Employee object at 0x000002054DFB99B0>, <__main__.Employee object at 0x000002054DFB99E8>, <__main__.Employee object at 0x000002054DFB9A20>, <__main__.Employee object at 0x000002054DFB9A58>, <__main__.Employee object at 0x000002054DFB9A90>, <__main__.Employee object at 0x000002054DFB9AC8>, <__main__.Employee object at 0x000002054DFB9B00>, <__main__.Employee object at 0x000002054DFB9B38>, <__main__.Employee object at 0x000002054DFB9B70>, <__main__.Employee object at 0x000002054DFB9BA8>, <__main__.Employee object at 0x000002054DFB9BE0>, <__main__.Employee object at 0x000002054DFB9C18>, <__main__.Employee object at 0x000002054DFB9C50>, <__main__.Employee object at 0x000002054DFB9C88>, <__main__.Employee object at 0x000002054DFB9CC0>, <__main__.Employee object at 0x000002054DFB9CF8>, <__main__.Employee object at 0x000002054DFB9D30>, <__main__.Employee object at 0x000002054DFB9D68>, <__main__.Employee object at 0x000002054DFB9DA0>, <__main__.Employee object at 0x000002054DFB9DD8>, <__main__.Employee object at 0x000002054DFB9E10>, <__main__.Employee object at 0x000002054DFB9E48>, <__main__.Employee object at 0x000002054DFB9E80>, <__main__.Employee object at 0x000002054DFB9EB8>, <__main__.Employee object at 0x000002054DFB9EF0>, <__main__.Employee object at 0x000002054DFB9F28>, <__main__.Employee object at 0x000002054DFB9F60>, <__main__.Employee object at 0x000002054DFB9F98>, <__main__.Employee object at 0x000002054DFB9FD0>, <__main__.Employee object at 0x000002054DFBC048>, <__main__.Employee object at 0x000002054DFBC080>, <__main__.Employee object at 0x000002054DFBC0B8>, <__main__.Employee object at 0x000002054DFBC0F0>, <__main__.Employee object at 0x000002054DFBC128>, <__main__.Employee object at 0x000002054DFBC160>, <__main__.Employee object at 0x000002054DFBC198>, <__main__.Employee object at 0x000002054DFBC1D0>, <__main__.Employee object at 0x000002054DFBC208>, <__main__.Employee object at 0x000002054DFBC240>, <__main__.Employee object at 0x000002054DFBC278>, <__main__.Employee object at 0x000002054DFBC2B0>, <__main__.Employee object at 0x000002054DFBC2E8>, <__main__.Employee object at 0x000002054DFBC320>, <__main__.Employee object at 0x000002054DFBC358>, <__main__.Employee object at 0x000002054DFBC390>, <__main__.Employee object at 0x000002054DFBC3C8>, <__main__.Employee object at 0x000002054DFBC400>, <__main__.Employee object at 0x000002054DFBC438>, <__main__.Employee object at 0x000002054DFBC470>, <__main__.Employee object at 0x000002054DFBC4A8>, <__main__.Employee object at 0x000002054DFBC4E0>, <__main__.Employee object at 0x000002054DFBC518>, <__main__.Employee object at 0x000002054DFBC550>, <__main__.Employee object at 0x000002054DFBC588>, <__main__.Employee object at 0x000002054DFBC5C0>, <__main__.Employee object at 0x000002054DFBC5F8>, <__main__.Employee object at 0x000002054DFBC630>, <__main__.Employee object at 0x000002054DFBC668>, <__main__.Employee object at 0x000002054DFBC6A0>, <__main__.Employee object at 0x000002054DFBC6D8>, <__main__.Employee object at 0x000002054DFBC710>, <__main__.Employee object at 0x000002054DFBC748>, <__main__.Employee object at 0x000002054DFBC780>, <__main__.Employee object at 0x000002054DFBC7B8>, <__main__.Employee object at 0x000002054DFBC7F0>, <__main__.Employee object at 0x000002054DFBC828>, <__main__.Employee object at 0x000002054DFBC860>, <__main__.Employee object at 0x000002054DFBC898>, <__main__.Employee object at 0x000002054DFBC8D0>, <__main__.Employee object at 0x000002054DFBC908>, <__main__.Employee object at 0x000002054DFBC940>, <__main__.Employee object at 0x000002054DFBC978>, <__main__.Employee object at 0x000002054DFBC9B0>, <__main__.Employee object at 0x000002054DFBC9E8>, <__main__.Employee object at 0x000002054DFBCA20>, <__main__.Employee object at 0x000002054DFBCA58>, <__main__.Employee object at 0x000002054DFBCA90>, <__main__.Employee object at 0x000002054DFBCAC8>]
    
    

    相关文章

      网友评论

        本文标题:python中的__eq__()方法和__hash__()函数

        本文链接:https://www.haomeiwen.com/subject/onnrqctx.html