簡體   English   中英

setter中的增量類屬性屬性

[英]Increment class property attribute in 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:超出最大遞歸深度”。 請幫忙。

我發現了問題。 主要問題是我使用的@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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM