So fügen Sie Eigenschaften dynamisch zu einer Klasse hinzu
In Python ist es möglich, Instanzeigenschaften dynamisch zu erstellen, was Ihnen die Flexibilität gibt, die Eigenschaften zu ändern Verhalten einer Klasse zur Laufzeit. So geht's:
Der erste Ansatz, den Sie versucht haben, war falsch, da c.ab auf ein Eigenschaftsobjekt und nicht auf den tatsächlichen Wert gesetzt wurde. Um eine Eigenschaft korrekt hinzuzufügen, müssen Sie die Klasse selbst ändern, nicht die Instanz.
class C(dict): pass ks = ['ab', 'cd'] vs = [100, 200] for i, k in enumerate(ks): # Define the property using classmethod setattr(C, k, property(lambda self: vs[i])) c = C() print(c.ab) # Outputs 100
In diesem aktualisierten Code definieren wir den setattr-Aufruf als Klassenmethode, die sicherstellt, dass die Eigenschaft zur hinzugefügt wird Klasse statt der Instanz. Die Lambda-Funktion innerhalb der Eigenschaft gibt den entsprechenden Wert aus der vs-Liste zurück.
Eigenschaften können auch zum Definieren dynamischer Getter- und Setter-Funktionen verwendet werden, was eine größere Flexibilität bei der Eigenschaftenverwaltung bietet. Denken Sie daran, dass das Hinzufügen von Eigenschaften nur auf Klassenebene und nicht auf Instanzebene erfolgen kann, was es zu einem leistungsstarken Werkzeug zum Anpassen des Klassenverhaltens macht.
Das obige ist der detaillierte Inhalt vonWie füge ich Eigenschaften dynamisch zu einer Python-Klasse hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!