Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Methoden zu vorhandenen Python-Objekten hinzufügen?
Hinzufügen von Methoden zu vorhandenen Objektinstanzen in Python
In Python wird generell davon abgeraten, Methoden zu vorhandenen Objekten hinzuzufügen (d. h. nicht in die Klassendefinition). Es gibt jedoch einige Ausnahmen, in denen dies erforderlich sein kann.
Gebundene Methoden vs. Funktionen
In Python werden Methoden von Funktionen dadurch unterschieden, dass sie an eine Objektinstanz gebunden sind . Beim Aufruf einer Methode wird die Instanz automatisch als erstes Argument übergeben.
Funktionen hingegen sind nicht an eine bestimmte Instanz gebunden und müssen explizit mit den entsprechenden Argumenten aufgerufen werden.
Klassenattribute ändern
Wenn Sie allen Instanzen einer Klasse eine Methode hinzufügen möchten, können Sie die Klasse einfach ändern Definition:
class A: def bar(self): print("bar") a = A() a.bar() # Output: "bar"
Einzelne Instanzen ändern
Wenn Sie jedoch einer bestimmten Instanz einer Klasse eine Methode hinzufügen müssen, werden die Dinge etwas komplizierter. Sie können eine Funktion nicht direkt einem Instanzattribut zuweisen, da diese nicht gebunden wird:
def barFighters(): print("barFighters") a.barFighters = barFighters a.barFighters() # TypeError: barFighters() takes exactly 1 argument
Funktionen mit MethodType binden
Um eine Funktion richtig zu binden Für eine Objektinstanz können Sie die MethodType-Funktion aus dem Typenmodul verwenden:
import types a.barFighters = types.MethodType(barFighters, a) a.barFighters() # Output: "barFighters"
Diese Methodenbindung stellt sicher, dass die Funktion mit der Instanz als aufgerufen wird das erste Argument beim Aufruf.
Das obige ist der detaillierte Inhalt vonWie kann ich Methoden zu vorhandenen Python-Objekten hinzufügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!