Wie schreibe ich einen Dekorator, um etwas in einen Kontextmanager zu verpacken, der Parameter übernimmt?

8

Ich habe gesehen Wie man einen Kontextmanager in einem Decorator verwendet und wie man ein im Decorator erzeugtes Objekt an dekorierte Funktion übergibt sowie Python-Dekoratoren mit Parametern , und ich versuche, die beiden zu kombinieren..aber ich kämpfe um meinen Kopf zu drehen.

Ich würde die func-Werkzeuge @wrap decorator lieber verwenden, wenn möglich, da ich weiß, ob die Doc-Zeichenfolge beibehalten wird.

Was ich machen möchte, ist folgendes:

%Vor%

Ich glaube nicht, dass das so funktioniert, die Methode return_employee_names ist am anderen Ende der Verbindung am Dienst. Soll ich nur den Funktionsaufruf zurückgeben? Wenn ja, wie gebe ich die Params dann ein?

    
Pureferret 27.05.2015, 17:01
quelle

1 Antwort

6

Sie würden das mit with ... as gebundene Objekt an die umbrochene Funktion übergeben; Die Funktion hätte , um ein solches Argument zu akzeptieren.

Dies ist analog zur Funktionsweise von Methoden; Sie sind nur Funktionen mit einem zusätzlichen ersten Argument ( self ):

%Vor%

Beachten Sie, dass ich eine weitere geschachtelte Funktion in pyro_opener() hinzufügen musste, um sie zu einer richtigen Decorator Factory zu machen.

    
Martijn Pieters 27.05.2015, 17:06
quelle