python小知识-属性查询优先级

1.getattribute() 无条件调用

2.数据描述符(定义了__get__\__set__方法的类的实例)

  --由1的getattribute()调用【注,会将数据描述符转换成:当前类名.__dict__['x'].__get__(instance,owner)】

  --如果我们重新定义了__getattribute__方法,可能会导致没办法调用数据描述符

3.当前对象的字典

  --如果数据描述符合当前对象字典的属性重名,那么数据描述符会覆盖之

4.当前类的字典

5.非数据描述符(只定义了__get__方法的类的实例)

6.父类的字典

7.__getattr__()

猜你喜欢

转载自www.cnblogs.com/wuchenggong/p/9220851.html