2bjiujiu

__getattr__  

  查找不到类属性的时候调用

class BeiMenChuiXue:
    def __init__(self, name):
        self.name = name

    def __getattr__(self, item):
        print("%s not find", item)
        raise Exception("实例方法没有找到")


if __name__ == \'__main__\':
    bei_men_chui_xue = BeiMenChuiXue("北门吹雪")
    print(bei_men_chui_xue.name)
    # 没有这个属性
    print(bei_men_chui_xue.hello)

  

__getattribute__

  无条件进入,无论是查找属性是否存在,能不重写则不去重写

class BeiMenChuiXue:
    def __init__(self, name):
        self.name = name

    def __getattribute__(self, item):
        print("%s  find" % item)


if __name__ == \'__main__\':
    bei_men_chui_xue = BeiMenChuiXue("北门吹雪")
    # 能找到,会发现其实是__getattribute__的返回值
    print(bei_men_chui_xue.name)
    # 没有这个属性
    print(bei_men_chui_xue.hello)

  

分类:

技术点:

相关文章:

  • 2021-10-16
  • 2021-05-27
  • 2022-02-07
  • 2022-02-15
  • 2022-01-18
猜你喜欢
  • 2021-06-30
  • 2021-06-06
  • 2021-05-20
  • 2021-11-10
  • 2021-08-22
  • 2021-12-09
相关资源
相似解决方案