我不明白以下优先级在__getattribute__()
特殊方法的上下文中意味着什么和Descriptors
我在Core Python Programmingtopic("Precedence") - under topic ("Desriptors")
3次的书下读了这个,仍然无法通过它。任何人都可以解释这些优先级是什么,以及它们的用途是什么?
- 类属性
- 数据描述符
- 实例属性
- 非数据描述符
- 默认为
__getattr__()
我还阅读了python 文档,在其中找到了以下语句:-
例如绑定,描述符调用的优先级取决于定义的描述符方法。描述符可以定义和
__get__()
的任意组合。如果未定义,则访问该属性将返回描述符对象本身,除非该对象的实例字典中有值。如果描述符定义和/或 ,它是一个数据描述符;如果两者都没有定义,则它是非数据描述符。通常,数据描述符定义了 and ,而非数据描述符只有 方法。__set__()
__delete__()
__get__()
__set__()
__delete__()
__get__()
__set__()
__get__()
**__set__()**
带有和**__get__()**
定义的数据描述符总是覆盖实例字典中的重新定义。相反,非数据描述符可以被实例覆盖。Python 方法(包括
staticmethod()
和classmethod()
)被实现为非数据描述符。因此,实例可以重新定义和覆盖方法。这允许单个实例获得与同一类的其他实例不同的行为。
任何人都可以举一个小例子来解释这first paragraph
是什么意思吗?还有说 - 是什么意思override a redefinition in an instance dictionary
?