Wie füge ich eine Instanzmethode zu einer Klasse hinzu, die eine Metaklasse verwendet (ja, muss ich eine Metaklasse verwenden)? Die folgende Art von Arbeiten, aber der func_name wird immer noch "foo":
%Vor%Mein Problem ist, dass ein bibliothekscode tatsächlich den func_name benutzt und später die 'bar'-Methode der Foo-Instanz nicht findet. Ich könnte tun:
%Vor%Es gibt auch types.MethodType, aber ich brauche eine Instanz, die noch nicht existiert. Fehle ich hier etwas?
Versuchen Sie, die Grundlagen dynamisch zu erweitern, so dass Sie die Vorteile des mro nutzen können, und die Methoden sind tatsächliche Methoden:
%Vor%Ich denke, was du machen willst ist das:
%Vor% Jetzt können Sie Foo
s an eine Bibliothek übergeben, die Foo
-Instanzen mit einer Methode namens foobar
erwartet.
Leider (1) Ich weiß nicht, wie man Metaklassen benutzt und (2) Ich bin mir nicht sicher, ob ich deine Frage richtig gelesen habe, aber ich hoffe, das hilft.
Beachten Sie, dass func_name
nur in Python 2.4 und höher zuweisbar ist.