描述器#
- 描述器
任何定义了
__get__()
,__set__()
或__delete__()
方法的对象。当一个类属性为描述器时,它的特殊绑定行为就会在属性查找时被触发。通常情况下,使用a.b
来获取、设置或删除一个属性时会在a
的类字典中查找名称为b
的对象,但如果b
是一个描述器,则会调用对应的描述器方法。如果一个对象定义了
__set__()
或__delete__()
,则它会被视为 数据描述器。仅定义了
__get__()
的描述器称为 非数据描述器 (它们经常被用于方法,但也可以有其他用途)。据和非数据描述器的不同之处在于,如何计算实例字典中项的替代值。如果实例的字典具有与数据描述器同名的项,则数据描述器优先。如果实例的字典具有与非数据描述器同名的项,则该字典项优先。
为了使数据描述器成为只读的,应该同时定义 __get__()
和 __set__()
,并在 __set__()
中引发 AttributeError
。
描述器调用概述
2000 * 30
60000