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?
Obwohl es nicht sehr elegant ist, können Sie locals()
:
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%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.
Tags und Links python metaprogramming