zoukankan      html  css  js  c++  java
  • __len__和__hash__

    __len__(self)

    内置函数len(obj)的原理就是触发对象所属类的__len__方法,该方法返回值必须为整型,len()拿到的就是该方法的返回值。

    class F:
        def __len__(self):
            # 返回对象的属性数量
            return len(self.__dict__)
    
    f = F()
    f.name = 'libai'
    print(len(f))  # 1
    

    __hash__(self)

    内置函数hash(obj)的原理就是触发对象所属类的__hash__方法,该方法返回值必须为整型,hash()拿到的就是该方法的返回值。

    作用:如果一个对象不可hash,通过重写__hash__让它变得可哈希。

    class Person:
        def __hash__(self):
            return hash(self.name)
    
    p = Person()
    p.name = 'libai'
    print(hash(p))
    

  • 相关阅读:
    BZOJ
    BZOJ
    BZOJ
    BZOJ
    BZOJ
    BZOJ
    [知识点]平衡树之Splay
    [BZOJ1015/JSOI2008]星球大战
    [知识点]状态压缩DP
    [NOIP2011]聪明的质检员
  • 原文地址:https://www.cnblogs.com/ChiRou/p/14238021.html
Copyright © 2011-2022 走看看