setter中的增量类属性属性

时间:2019-07-16 23:36:38

标签: python properties

我了解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:超过最大递归深度”。请帮忙。

1 个答案:

答案 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