Hinzufügen von Klassenattributen mit einer for-Schleife in Python

8

Ich habe versucht, eine Klasse aus einem Wörterbuch zu generieren:

%Vor%

Dies ergibt den Fehler, dass attr nicht während der for-Schleife definiert ist. Ich weiß, ich könnte schreiben:

%Vor%

Aber ich bin sicher, ich erinnere mich, irgendwo Code gesehen zu haben, der dem ersten Beispiel ähnlich ist. Weiß jemand, ob es möglich ist, etwas ähnliches wie das erste Formular zu schreiben?

    
Casebash 15.02.2010, 10:58
quelle

5 Antworten

6

Obwohl es nicht sehr elegant ist, können Sie locals() :

verwenden %Vor%     
Max Shawabkeh 15.02.2010, 11:14
quelle
3

Angenommen, Sie möchten Klassenattribute wie diese dynamisch hinzufügen

%Vor%

Sie können dies auf verschiedene Arten tun, z. Fügen Sie einfach Attribute hinzu, nachdem die Klasse erstellt wurde, da Sie problemlos auf den Klassennamen innerhalb der Klasse

zugreifen können %Vor%

oder besser nur einfach Klasse erstellen, z. B.

%Vor%

oder wenn Sie möchten, verwenden Sie metaclass z. B.

%Vor%     
Anurag Uniyal 15.02.2010 11:35
quelle
2

Ich weiß nicht genau, was du tust. Ich kann Ihnen ein Beispiel für das Hinzufügen von Klassenattributen zu einer Klasse in einer for-Schleife geben:

%Vor%

Denken Sie daran, dass for ausgeführt werden muss, nachdem die ganze Klasse definiert wurde. Sie erhalten den Fehler, dass attr nicht definiert ist, weil Sie auf die Klasse zugreifen möchten, bevor Sie sie erstellen ( class ... ist eine Anweisung in Python, die ein Klassenobjekt erzeugt). Sie müssen Attribute hinzufügen, nachdem Sie eine Klasse und ein Remember erstellt haben. Dies sind Klassenattribute, keine Instanzattribute.

    
gruszczy 15.02.2010 11:02
quelle
2
%Vor%     
Ignacio Vazquez-Abrams 15.02.2010 11:19
quelle
1
%Vor%     
shuvalov 15.02.2010 11:05
quelle

Tags und Links