无法理解python中的实例变量描述符
我正在读这篇文章,几乎没有什么事情是不清楚的 他使用这个密码无法理解python中的实例变量描述符,python,Python,我正在读这篇文章,几乎没有什么事情是不清楚的 他使用这个密码 class O4(O3): @property # this decorator makes this instancevar into a data descriptor def var(self): return "Data descriptors (such as properties) are high priority" @var.setter # I'll let O3's co
class O4(O3):
@property # this decorator makes this instancevar into a data descriptor
def var(self):
return "Data descriptors (such as properties) are high priority"
@var.setter # I'll let O3's constructor set a value in __dict__
def var(self, value):
self.__dict__["var"] = value # but I know it will be ignored
他说@property将任何实例变量转换为数据描述符
\uuuuuu get\uuuuuuu
、\uuuu set\uuuuuuuu
和\uuu del\uuuuuuu
\uuuu get\uuuu
我不明白
如果查看系统上属性装饰器的代码,您将看到它包含三个参数:
:获取变量的函数李>fget
:设置变量的函数李>fset
:删除变量的函数fdel
@property
def my_var(self):
return self._my_var
如果您还希望声明一个setter,您可以通过使用新的“属性”包含一个setter。setter
:
@my_var.setter
def my_var(self, value):
self._my_var = value
这两者的组合相当于调用
my\u var=property(get\u my\u var,set\u my\u var)
如果查看系统上属性装饰器的代码,您会发现它包含三个参数:
:获取变量的函数李>fget
:设置变量的函数李>fset
:删除变量的函数fdel
@property
def my_var(self):
return self._my_var
如果您还希望声明一个setter,您可以通过使用新的“属性”包含一个setter。setter
:
@my_var.setter
def my_var(self, value):
self._my_var = value
这两者的组合相当于调用
my\u var=property(get\u my\u var,set\u my\u var)
@property
调用属性()
内置项,有关详细信息,请参阅文档
属性
只有一个必需参数,即最左边的“getter”。其他的是setter
和deleter
使用带有@
前缀的修饰符只是语法上的糖分。如果您希望以更传统的方式(如果不是音速)调用属性
:
@property
调用property()
内置函数,您应该查阅文档以了解该函数的详细信息
属性
只有一个必需参数,即最左边的“getter”。其他的是setter
和deleter
使用带有@
前缀的修饰符只是语法上的糖分。如果您希望以更传统的方式(如果不是音速)调用属性
:
从
属性
文档:确保为附加函数指定与原始属性相同的名称。当用作setter时,您的set\u my\u var
将给出AttributeError。您对property
的等效调用也是可疑的,因为您将my\u var
(引用函数)替换为property
的返回值。如果您没有使用装饰器,那么函数名必须与属性名不同。对于decorator,它们都使用相同的名称。虽然覆盖变量的效果很好,但我已将内容更改为更明确:)从属性更改为doc:确保为附加函数指定与原始属性相同的名称。当用作setter时,您的set\u my\u var
将给出AttributeError。您对property
的等效调用也是可疑的,因为您将my\u var
(引用函数)替换为property
的返回值。如果您没有使用装饰器,那么函数名必须与属性名不同。对于decorator,它们都使用相同的名称。虽然覆盖变量效果很好,但我已将内容更改为更明确的:)