首页 > 解决方案 > 在 setter 中增加类属性属性

问题描述

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

标签: pythonproperties

解决方案


我发现了这个问题。主要问题是我对@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

推荐阅读