Binden ungebundener Methoden in Python
Das Binden ungebundener Methoden an Instanzen ist eine häufige Aufgabe in der Python-Programmierung, insbesondere bei der Arbeit mit Frameworks wie wxPython. Der einfache Aufruf der Methode bind() für eine ungebundene Methode führt jedoch zu einem Fehler.
Das Problem
Beim Binden einer ungebundenen Methode schlägt das Programm aufgrund ungebundener Methoden fehl erfordern den Aufruf einer Instanz. Wenn Sie sie direkt binden, ohne sie aufzurufen, wird ein Fehler generiert.
Die Lösung
Glücklicherweise gibt es zwei Lösungen für dieses Problem.
Verwenden Deskriptoren
Funktionen in Python sind auch Deskriptoren, was bedeutet, dass sie eine haben get-Methode. Diese Methode ermöglicht die Bindung ungebundener Methoden an Instanzen. So binden Sie eine ungebundene Methode mithilfe von Deskriptoren:
bound_handler = handler.__get__(self, MyWidget)
Verwenden einer benutzerdefinierten Bindungsfunktion
Alternativ können Sie eine benutzerdefinierte Bindungsfunktion wie bind() aus dem Beispiel verwenden unten:
def bind(instance, func, as_name=None): bound_method = func.__get__(instance, instance.__class__) setattr(instance, as_name, bound_method) return bound_method
Mit dieser Funktion können Sie eine ungebundene Methode mit einer benutzerdefinierten Methode verknüpfen Name.
Fazit
Durch die Verwendung entweder des Deskriptoransatzes oder einer benutzerdefinierten Bindungsfunktion können Sie ungebundene Methoden binden, ohne sie aufzurufen, und so eine saubere und wartbare Codestruktur ermöglichen.
Das obige ist der detaillierte Inhalt vonWie binde ich ungebundene Methoden an Instanzen in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!