2016-07-01 11 views
0

Gibt es eine init() -Methode für die Klasse (nicht für die Instanz). Was ich will, ist die Klassenvariable Wert (es ist teuer Operation) beim ersten Mal eine Instanz erstellt wird. Etwas wie:Initialisierung der Klassenvariablen?

class Blah: 
    abc = None 

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

Warum nicht Ihr Beispiel funktioniert? – wwii

+0

Sie könnten wahrscheinlich mit einer Metaklasse herumalbern und es tun, was Sie wollen. Hier ist ein Anfang - [Python metaclasses by example] (http://eli.thegreenplace.net/2011/08/14/python-metaclasses-by-example) – wwii

+0

Oder vielleicht [Verwenden von Decorators zu Patch-Klassen-Definitionen] (http: //chimera.labs.oreilly.com/books/1230000000393/ch09.html#_discussion_154) (Python Cookbook) - ungefähr ein Drittel des Weges nach unten auf dieser Seite – wwii

Antwort

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

Ist das nicht genau das, was in der Frage ist? – Barmar