问题描述
我试图在python中使用@property
装饰器,而对于@x.setter
块为何在以下工作却感到困惑:
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
return self._x
@x.setter
def x(self,value):
self._x = value
@x.deleter
def x(self):
del self._x
根据我对post的阅读,我了解
@property
def x(self):
return self._x
等同于
def x(self):
return self._x
x = property(x)
这对我来说很有意义。 x
先引用一个函数,然后引用一个属性(以所述函数作为参数)。
但是,以与我们类似的方式考虑@x.setter
块,
def x(self,value):
self._x = value
x = x.setter(x)
同样,我们有x
引用了一个函数,但是最后一行让我感到困扰。我们如何在同一行中将x
既作为属性又作为函数?我希望这会引发一个错误(在python解释器中尝试时确实会发生此错误)。
当然,装饰器语法有效,所以我在思考它时一定有问题。范围是否随装饰器而变化,使得x
引用内部的函数但不引用属性?也许指令像x = x.setter(def x(self,value): self._x = value)
一样嵌套?但这会导致解释器出现语法错误...
我对Python来说还很陌生,所以我可能只是没有使用Google正确的术语。谢谢 为您提供帮助!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)