Dynamisches Hinzufügen von Methoden zu vorhandenen Python-Objekten
Im Gegensatz zu klassendefinierten Methoden wird generell davon abgeraten, Methoden zu vorhandenen Objekten in Python hinzuzufügen. Es gibt jedoch Szenarien, in denen dies erforderlich sein kann.
Funktionen und gebundene Methoden verstehen
In Python unterscheiden sich Funktionen von gebundenen Methoden. Gebundene Methoden werden einer Instanz zugeordnet und übergeben diese als erstes Argument an die Methode. Funktionen hingegen sind ungebunden.
Klassenattribute ändern
Sie können einer Klasse eine Methode hinzufügen, indem Sie ihre Definition ändern:
class A: def foo(self): print("foo") A.fooFighters = fooFighters # Attach the fooFighters function as a method
Dadurch werden alle Instanzen der Klasse A aktualisiert, einschließlich der vorhandenen.
Anhängen von Methoden an Instanzen
Um eine Methode an eine bestimmte Instanz anzuhängen, können Sie die Funktion „types.MethodType“ verwenden:
import types a.barFighters = types.MethodType(barFighters, a) # Bind the barFighters function to instance a
Dadurch wird sichergestellt, dass die Methode korrekt an die Instanz gebunden ist.
Einschränkungen
Während es möglich ist, Methoden dynamisch hinzuzufügen Instanzen gibt es Einschränkungen:
Alternativen
Stattdessen Wenn Sie Methoden direkt zu Objekten hinzufügen, ziehen Sie die folgenden Alternativen in Betracht:
Das obige ist der detaillierte Inhalt vonWie kann ich Methoden dynamisch zu Python-Objekten hinzufügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!