我了解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:超过最大递归深度”。请帮忙。
答案 0 :(得分:0)
我发现了问题。主要问题是我使用的@martineau提到的属性和属性使用相同的名称。另外,我在很多地方都想念自己。下面是工作示例。
class Variables(object):
def __init__(self):
self.a = 0
@property
def a(self):
return self.__a
@a.setter
def a(self, x):
self.__a = x