So fügen Sie eine Methode mithilfe der Metaklasse hinzu

8

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?

    
Knut Eldhuset 15.09.2008, 18:24
quelle

2 Antworten

15

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%     
Aaron Maenpaa 15.09.2008, 19:01
quelle
2

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.

    
Nathan Shively-Sanders 15.09.2008 18:57
quelle

Tags und Links