2017-03-17 59 views
0

只是好奇, 是否有可能將靜態attrs保存在一個返回同一類的實例化對象的類中?特別是不使用工廠的方法,但attr如何從python的靜態屬性中返回一個類的實例

class Money: 
    CENT = Money('cent') 

    def __init__(self, value): 
     self.value = value 

Money.CENT #==> Returns Money('cent') 

我能想出最好的是,但不是在同一類。

class SampleMoney: 
    CENT = Money('cent') 
    DOLLAR = Something('dollar') 

SampleMoney.CENT #==> Money('cent') 
+0

它需要是一個attr還是它可以是一個方法? –

+1

爲什麼你想這樣做,我相信有更好的方式來服務你的用例。 – Shubham

+0

attr,使用方法很容易返回一個新的實例 –

回答

1

你可以使用下面的技巧來創建一個類屬性:

class Something: 
    class __metaclass__: 
     @property 
     def EMPTY(cls): 
      return cls('empty') 

另外,剛過界定呢?

class Something: 
    # ... 

Something.EMPTY = Something('empty') 
相關問題