Python-属性拦截器——__getattribute__

Python-属性拦截器——getattribute

#getattribute(self, item):
当一个类的属性被实例访问时,会自动调用该方法。
当实例调用属性时,比如s1.name,会把name作为实参传进__getattribute__方法中,经过一系列操作后,再把name处理后的结果返回。Python中只要定义了继承object的类,就默认存在属性拦截器,只不过是拦截后没有进行任何操作,而是直接返回。
所以我们可以自己改写__getattribute__方法来实现相关功能,比如查看权限、打印log日志等;如果重写了__getattribute__,则类会调用重写的方法,所以这个方法必须要有renturn返回值,返回传进去的属性,否则调用属性会出现失败的情况。
在这里插入图片描述
与__getattribute__功能接近的,还有:

getattr(self, key):
重载__getattr__方法对类及其实例未定义的属性有效。也就是说,如果访问的属性存在,就不会调用__getattr__方法。这个属性的存在,包括类属性和实例属性。
在这里插入图片描述
当同时定义__getattribute__和__getattr__时,__getattr__方法不会再被调用,除非显示调用__getattr__方法或引发AttributeError异常。
在这里插入图片描述
setattr(self, key, value):
当试图给对象的key属性赋值的时候将会被调用,若属性不存在,先创建再赋值。

了解更多分析及数据抓取可查看:
http://cloud.yisurvey.com:9081/html/bd9fb365-ae11-4182-84d0-af28197bac71.html?ly=csdn
本文转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请联系我们删除处理。
特别说明:本文旨在技术交流,请勿将涉及的技术用于非法用途,否则一切后果自负。如果您觉得我们侵犯了您的合法权益,请联系我们予以处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值