2016-07-01 15 views
0

クラスの場合()メソッドがあります(インスタンスではありません)。 私がしたいのは、インスタンスを初めて作成したときに、クラス変数の値を設定することです(高価な操作です)。 のような何か:クラス変数の初期化?

class Blah: 
    abc = None 

    def __init__(self): 
    if Blah.abc is None : Blah.abc = [1,2,3] 
+0

はなぜあなたの例は動作しませんでしたか? – wwii

+0

あなたはおそらくメタクラスで馬鹿になり、あなたが望むことをすることができます。ここでは始まりです - [Pythonメタクラスによる例](http://eli.thegreenplace.net/2011/08/14/python-metaclasses-by-example) – wwii

+0

あるいは[Decoratorを使ってクラス定義をパッチする](http: //chimera.labs.oreilly.com/books/1230000000393/ch09.html#_discussion_154)(Python Cookbook) - そのページの下にある1/3程度。 – wwii

答えて

0
>>> class Blah: 
...  abc = None 
...  def __init__(self): 
...  if Blah.abc is None: 
...   Blah.abc = [1,2,3] 
... 
>>> print(Blah.abc) 
None 
>>> foo = Blah() 
>>> print(Blah.abc) 
[1, 2, 3] 
+1

これは問題の正確な内容ではありませんか? – Barmar