python __getattribute__
当访问对象属性和方法(包括__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__相关推荐
- Python属性拦截器之__getattribute__与__getattr__
在Python中自定义了很多内建属性,如__getattribute__(),即属性访问拦截器,它的作用是当我们访问实例对象的属性时,并不会立即返回属性的值,而是自动调用__getattribute_ ...
- Python 属性__getattribute__
首先理解__getattribute__的用法,先看代码: class Tree(object):def __init__(self,name):self.name = nameself.cate = ...
- Python的__getattribute__ vs __getattr__的妙用
这里的属性即包括属性变量,也包括属性方法.即类的变量和方法. 当访问某个实例属性时, getattribute会被无条件调用,如未实现自己的getattr方法,会抛出AttributeError提示找 ...
- python元编程之使用动态属性实现定制类--特殊方法__setattr__,__getattribute__篇
问题:实现一个类,要求行为如同namedtuple:只存在给定名称的属性,不允许动态添加实例属性. 主要知识点在于: __setattr__,__getattr__,getattribute__,__ ...
- python getattr和getattribute_python中__getattr__和__getattribute__区别
重载__getattr__方法对类及其实例未定义的属性有效.如果访问的属性存在,就不会调用__getattr__方法.这个属性的存在,包括类属性和实例属性 classClassA: x= 'a' de ...
- python : class定义中的:__dict__,__setattr__,__getattribute__,__getattr__,
__setattr__,__getattribute__,__getattr__是三个python的与类(class)定义相关的内置函数,与类(class)实例的属性的"赋值"与& ...
- python 的魔方方法__getattribute__ 和__getattr__方法介绍
python 中有2个获取对象属性的方法__getattribute__ 和__getattr__方法比较容易混淆, 接下来说明下这2个魔方方法的区别及用法: __getattr__方法 class ...
- Python中的getattr、__getattr__、__getattribute__、__get__
getattr getattr(object, name[, default])是Python的内置函数之一,它的作用是获取对象的属性. 示例 >>> class Foo: ... ...
- 第8.27节 Python中__getattribute__与property的fget、@property装饰器getter关系深入解析
一. 引言 在<第7.23节 Python使用property函数定义属性简化属性访问的代码实现>和<第7.26节 Python中的@property装饰器定义属性访问方法gette ...
最新文章
- 下拉列表怎么判断html,判断下拉列表中的值,实现页面跳转,请问这个怎么判断?...
- 分享一些有趣的面试智力题
- 【TJOJI\HEOI2016】求和
- svg入门经典pdf_机器学习最好的入门课程是什么?
- 32位与64位应用程序速度分析
- 戴尔笔记本不能识别U盘和鼠标解决方法
- eclipse中怎么复制错误提示
- VS2008SP1安装不上
- Hutool 导出excel并合并单元格
- 百度竞价账户关键词分类
- 公司域名邮箱如何注册?163公司邮箱注册好用吗?
- 如何修改 linux 命令行登录界面
- iPhone打开个人热点的时候提示“请联系carrier”的解决方法
- gitlab-ci配置详解(一)
- 在 Flutter 中自定义画笔 Painter
- 软件测试之TCP、HTTP协议必知必会,面试必备
- 计算机如何安装cpu风扇,cpu风扇安装,小编教你cpu风扇怎么安装
- 数学专业学金融还是计算机,高考志愿---谈一谈数学专业
- html_blog 84-109
- 会议场所扩声系统部署需要注意哪些事项?
热门文章
- 服务器芯片组c621,三路千兆LAN:GIGABYTE 技嘉 发布 C621-SU8 服务器主板
- 信捷步进指令的使用_电工想做PLC工程师?那步进电机的编程控制指令你一定要了解...
- Python之网络爬虫(XML与HTML与JSON文件、urllib与request的用法)
- python 日期处理_python 处理时间和日期
- Python使用ZeroMQ/inproc模式实现多线程服务端
- 一个完整网页代码HTML和CSS,第一个网页(HTML/CSS)
- 华为服务器gpu卡型号,gpu服务器与配置
- 力扣第202题. 快乐数(JavaScript)
- 指数随机变量 泊松过程跳_概率微课:第二章(19) 连续型随机变量函数的分布1...
- java interceptor用法_java自定义拦截器用法实例