__getattribute__的使用方法
时间: 2023-08-26 18:10:54 浏览: 98
__getattribute__是Python中的一个特殊方法,用于在访问对象属性时进行自定义操作。当在类内定义了__getattribute__方法时,它会打破原有的属性查找方式。在使用obj.value查找属性时,会无条件调用__getattribute__方法。\[1\]
下面是一个使用__getattribute__方法的示例:
```python
class MyClass:
def __getattribute__(self, item):
print('__getattribute__')
return super().__getattribute__(item)
if __name__ == '__main__':
obj = MyClass()
obj.value
```
在上述示例中,当访问obj.value时,会触发__getattribute__方法,并打印出'__getattribute__'。然后,super().__getattribute__(item)会调用父类的__getattribute__方法来获取属性值。\[2\]
需要注意的是,__getattribute__方法在属性查找时会被优先调用,而不管属性是否存在。如果属性不存在,会引发AttributeError异常。如果想在属性不存在时执行自定义操作,可以使用__getattr__方法。\[3\]
#### 引用[.reference_title]
- *1* [python魔法方法 _getattr_ 和 __getattribute__](https://blog.csdn.net/weixin_29864813/article/details/112992737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [Python的__getattr__和__getattribute__](https://blog.csdn.net/weixin_39812046/article/details/110703391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文