【发布时间】:2019-07-16 23:36:38
【问题描述】:
我理解python中getter/setter的概念。我无法理解的是,我需要为变量本身添加新值,我不确定如何使用 @property 装饰器来实现这一点。
旧代码实例化一些变量并自增。我正在尝试重构代码并将这些变量移动到一个类中并添加@property/setter,以便我可以将它们作为属性访问。
旧代码:
class ExistingCode(object):
a = 0
b = 0
c = 0
d = 0
bunch of other code..
a += 12
b += 12
c += 12
d += 12
我想做的是:
class Variables(object):
def __init__(self):
a = 0
b = 0
c = 0
d = 0
@property
def a(self):
return self.a
@a.setter
def a(self, x)
a = x
......
我收到“RuntimeError:超出最大递归深度”。请帮忙。
【问题讨论】:
-
您需要为实际属性指定一个与属性名称不同的名称(如documentation 中为
x属性显示的示例。 -
@martineau - 你是对的。我添加了使用该属性的正确方法。感谢您指出这一点。
标签: python properties