2017-03-17 8 views
0

好奇心が強い、 同じクラスのインスタンス化されたオブジェクトを返すクラスに静的attrsを保持することはできますか?具体的にはファクトリメソッドを使用していませんが、attrPythonのstatic属性からクラスのインスタンスを返す方法

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') 
関連する問題