zoukankan      html  css  js  c++  java
  • Python:__getattr__ 和 __getattribute__ 方法

    __getattr__

    __getattr__方法的自动执行,需要满足两个条件:一是通过实例访问属性;二是触发了AttributeError异常(属性不存在)。

     

     上图中,调用不存在的job属性,会首先调用__getattribute__方法,触发AttributeError异常并自动捕获,然后才调用__getattr__方法。

      __getattribute__

    该方法可以拦截对对象属性的所有访问企图,当属性被访问时,自动调用该方法(只适用于新式类)。

     

    通过上图中的代码示例可以看出,一旦实现了__getattribute__方法,所有通过对象访问的属性(包括类属性)都会被拦截,而直接通过类访问类属性则不会。

    调用父类的方法super().__getattribute__(item),实现:
    1)通过对象访问属性时,可以正常返回值;
    2)当调用的属性不存在时,会抛出异常AttributeError,并调用__getattr__方法;
  • 相关阅读:
    EXISTS 的使用
    bind()和 unbind()绑定解绑事件的使用
    前端代码
    LIKE CONCAT 连用
    客服工作台
    杂录
    vue
    咋乱杂乱的一些总结
    kotlin 很杂很杂
    group by 和 order by 的区别 + 理解过程
  • 原文地址:https://www.cnblogs.com/test123/p/14201415.html
Copyright © 2011-2022 走看看