0
クラスの場合()メソッドがあります(インスタンスではありません)。 私がしたいのは、インスタンスを初めて作成したときに、クラス変数の値を設定することです(高価な操作です)。 のような何か:クラス変数の初期化?
class Blah:
abc = None
def __init__(self):
if Blah.abc is None : Blah.abc = [1,2,3]
クラスの場合()メソッドがあります(インスタンスではありません)。 私がしたいのは、インスタンスを初めて作成したときに、クラス変数の値を設定することです(高価な操作です)。 のような何か:クラス変数の初期化?
class Blah:
abc = None
def __init__(self):
if Blah.abc is None : Blah.abc = [1,2,3]
>>> 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]
これは問題の正確な内容ではありませんか? – Barmar
はなぜあなたの例は動作しませんでしたか? – wwii
あなたはおそらくメタクラスで馬鹿になり、あなたが望むことをすることができます。ここでは始まりです - [Pythonメタクラスによる例](http://eli.thegreenplace.net/2011/08/14/python-metaclasses-by-example) – wwii
あるいは[Decoratorを使ってクラス定義をパッチする](http: //chimera.labs.oreilly.com/books/1230000000393/ch09.html#_discussion_154)(Python Cookbook) - そのページの下にある1/3程度。 – wwii