当访问对象属性和方法(包括__dict__)时,自动调用该方法。常用于实现一些访问某一属性时执行一段代码的特性。
注意避开无线循环(因为可以访问__dict__,__dict___又可以访问属性,安全的做法是使用父类的方法super().__getattribute__

class Tree(object):def __init__(self,name):self.name = namedef __getattribute__(self,attr):print("__getattribute__ 执行")print(attr)return object.__getattribute__(self,attr)
aa = Tree("wang")
print(aa.name)输出:
__getattribute__ 执行
name
wang
当访问`name`属性时,会自动调用`__getattribute__`方法,`name`属性也会被传入`__getattribute__`方法中,既上例中的`attr`参数。然后调用父类的`return object.__getattribute__(self,attr)`方法,经过一系列操作后,返回属性的值。
如果省去`return object.__getattribute__(self,attr)`则无法得到属性。因为父类的`__getattribute__`会最终调用`__getattr__`来返回相应的值。
通过类访问的类的属性不会通过`__getattribute__`方法

参考:
https://blog.csdn.net/yitiaodashu/article/details/78974596 有误,传入的是属性名,而不是属性值
https://www.cnblogs.com/sheshouxin/p/10448056.html
https://www.cnblogs.com/telecomshy/p/10605679.html

python __getattribute__相关推荐

  1. Python属性拦截器之__getattribute__与__getattr__

    在Python中自定义了很多内建属性,如__getattribute__(),即属性访问拦截器,它的作用是当我们访问实例对象的属性时,并不会立即返回属性的值,而是自动调用__getattribute_ ...

  2. Python 属性__getattribute__

    首先理解__getattribute__的用法,先看代码: class Tree(object):def __init__(self,name):self.name = nameself.cate = ...

  3. Python的__getattribute__ vs __getattr__的妙用

    这里的属性即包括属性变量,也包括属性方法.即类的变量和方法. 当访问某个实例属性时, getattribute会被无条件调用,如未实现自己的getattr方法,会抛出AttributeError提示找 ...

  4. python元编程之使用动态属性实现定制类--特殊方法__setattr__,__getattribute__篇

    问题:实现一个类,要求行为如同namedtuple:只存在给定名称的属性,不允许动态添加实例属性. 主要知识点在于: __setattr__,__getattr__,getattribute__,__ ...

  5. python getattr和getattribute_python中__getattr__和__getattribute__区别

    重载__getattr__方法对类及其实例未定义的属性有效.如果访问的属性存在,就不会调用__getattr__方法.这个属性的存在,包括类属性和实例属性 classClassA: x= 'a' de ...

  6. python : class定义中的:__dict__,__setattr__,__getattribute__,__getattr__,

    __setattr__,__getattribute__,__getattr__是三个python的与类(class)定义相关的内置函数,与类(class)实例的属性的"赋值"与& ...

  7. python 的魔方方法__getattribute__ 和__getattr__方法介绍

    python 中有2个获取对象属性的方法__getattribute__ 和__getattr__方法比较容易混淆, 接下来说明下这2个魔方方法的区别及用法: __getattr__方法 class ...

  8. Python中的getattr、__getattr__、__getattribute__、__get__

    getattr getattr(object, name[, default])是Python的内置函数之一,它的作用是获取对象的属性. 示例 >>> class Foo: ... ...

  9. 第8.27节 Python中__getattribute__与property的fget、@property装饰器getter关系深入解析

    一. 引言 在<第7.23节 Python使用property函数定义属性简化属性访问的代码实现>和<第7.26节 Python中的@property装饰器定义属性访问方法gette ...

最新文章

  1. 下拉列表怎么判断html,判断下拉列表中的值,实现页面跳转,请问这个怎么判断?...
  2. 分享一些有趣的面试智力题
  3. 【TJOJI\HEOI2016】求和
  4. svg入门经典pdf_机器学习最好的入门课程是什么?
  5. 32位与64位应用程序速度分析
  6. 戴尔笔记本不能识别U盘和鼠标解决方法
  7. eclipse中怎么复制错误提示
  8. VS2008SP1安装不上
  9. Hutool 导出excel并合并单元格
  10. 百度竞价账户关键词分类
  11. 公司域名邮箱如何注册?163公司邮箱注册好用吗?
  12. 如何修改 linux 命令行登录界面
  13. iPhone打开个人热点的时候提示“请联系carrier”的解决方法
  14. gitlab-ci配置详解(一)
  15. 在 Flutter 中自定义画笔 Painter
  16. 软件测试之TCP、HTTP协议必知必会,面试必备
  17. 计算机如何安装cpu风扇,cpu风扇安装,小编教你cpu风扇怎么安装
  18. 数学专业学金融还是计算机,高考志愿---谈一谈数学专业
  19. html_blog 84-109
  20. 会议场所扩声系统部署需要注意哪些事项?

热门文章

  1. 服务器芯片组c621,三路千兆LAN:GIGABYTE 技嘉 发布 C621-SU8 服务器主板
  2. 信捷步进指令的使用_电工想做PLC工程师?那步进电机的编程控制指令你一定要了解...
  3. Python之网络爬虫(XML与HTML与JSON文件、urllib与request的用法)
  4. python 日期处理_python 处理时间和日期
  5. Python使用ZeroMQ/inproc模式实现多线程服务端
  6. 一个完整网页代码HTML和CSS,第一个网页(HTML/CSS)
  7. 华为服务器gpu卡型号,gpu服务器与配置
  8. 力扣第202题. 快乐数(JavaScript)
  9. 指数随机变量 泊松过程跳_概率微课:第二章(19) 连续型随机变量函数的分布1...
  10. java interceptor用法_java自定义拦截器用法实例