Python-Wrap-Klassenmethode

8

Ich versuche, ein Objekt mit einer run-Methode zu erstellen, die von einer _wrap_run-Methode umschlossen wird. Ich möchte in der Lage sein, die Methode und den Wrapper aufzurufen, indem Sie einfach instance.run () eingeben und das Objekt unterklassieren wollen, damit ich die run () -Methode überschreiben und den Wrapper ausführen kann .

Einfacher gesagt, ich möchte, dass Leute in der Lage sind, A abzuleiten und run () außer Kraft zu setzen, aber immer noch Aufrufe der run () -Methode auszuführen, die Wrapper-Funktion auszuführen.

Ich habe einige Schwierigkeiten mit der Mechanik. Hat jemand Vorschläge zu diesem Ansatz? Danke fürs Lesen.

%Vor%     
Joe J 21.07.2011, 18:31
quelle

4 Antworten

12

Verwenden Sie eine Metaklasse.

%Vor%

Wenn andere Personen nun die Unterklasse MyClass erstellen, erhalten sie immer noch ihre run() Methoden eingepackt.

    
agf 21.07.2011, 18:50
quelle
3

Einfachster Weg: Machen Sie run zum Wrapper, und eine private Methode ist die überschreibbare Methode.

%Vor%     
Cat Plus Plus 21.07.2011 18:36
quelle
1

Was Sie dort haben, ist im Grunde ein Dekorateur . Warum also nicht weitermachen und% co_de implementieren? % als Dekorator und wenden Sie es an, wenn Sie die Funktion ableiten?

    
Gabi Purcaru 21.07.2011 18:37
quelle
1

Was andere Leute tun

%Vor%

Das ist normalerweise ausreichend.

Wenn du dir Sorgen machen willst, dass jemand dies "bricht", hör jetzt auf. Verschwende keine Zeit mit Sorgen.

Es ist Python. Wir sind alle Erwachsene hier. Alle bösartigen Soziopathen werden alles, was Sie programmieren, kaputt machen, indem Sie es kopieren, ändern und dann aufbrechen. Egal, was Sie tun, sie werden nur Ihren Code kopieren und modifizieren, um die cleveren Bits zu brechen.

Alle anderen werden Ihren Kommentar lesen und sich an Ihre Regeln halten. Wenn sie Ihr Modul / Paket / Framework verwenden möchten, werden sie zusammenarbeiten.

    
S.Lott 21.07.2011 19:14
quelle

Tags und Links