2 Stimmen

Python-Methode mit optionalem Argument ausschmücken

Ich habe eine Python-Klasse mit vielen Methoden mit Signatur:

def select_xxx(self, arg1 , arg2 , .. argn, intersect = False)

D.h. die Methoden haben eine unterschiedliche (1-3) Anzahl von Positionsargumenten und ein optionales Argument intersect mit dem Standardwert False. Ich möchte alle diese Methoden mit einem Decorater dekorieren, der den Wert des intersect-Parameters untersucht und entsprechend unterschiedliche Aktionen ausführt. Mein derzeitiger Ansatz ist in etwa so:

def select_decorator(select_method):

  def select_wrapper( self , *args, intersect = False , **kwargs)
     if intersect:
        # Special init code for intersect == True
        select_method( self , *args , **kwargs)
     else:
        # Normal call path for intersect == False 
        select_method( self , *args , **kwargs)

  return select_wrapper  

@select_decorator
select_xxx( self , arg1 , arg2 , intersect = False)

Aber das optionale Argument intersect in den *args und **kwargs Mix innerhalb des Dekorators zu bekommen, macht derzeit keine Freude. Ich könnte die **kwargs-Funktionalität opfern, wenn das das Problem leichter zu lösen macht. Irgendwelche Vorschläge?

Joakim

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X