# 创建类classA:
x =250def__getattribute__(self, item):print(item,"getattribute -> 运行")returnsuper().__getattribute__(item)def__getattr__(self, item):print(item,"getattr-> 运行")return''
运行示例
a = A()# 当获取实例对象的属性时会先触发__getattribute__方法print(getattr(a,'x',1))print("="*50)# 当__getattribute__没有找到实例对象的属性时才会运行 __getattr__ 方法print(getattr(a,'a',1))print("="*50)print(a.a)print("获取类属性不会触发__getattribute__","="*50)print(A.x)
输出=======================================================================================
x getattribute -> 运行
250==================================================
a getattribute -> 运行
a getattr-> 运行
==================================================
a getattribute -> 运行
a getattr-> 运行
==================================================250