vorne weg. Bin leider etwas unbedarft was Pythons Decorators angeht und versuche nun
seit mehreren Stunden meinen Kopf drum zu wickeln. Kann also sein, dass ich hier etwas total blödes versuche
zu dem Decorators nicht geeignet sind und ich es einfach nicht verstehe.
Nun zum Problem:
Ich möchte mehrere Funktionen mit einem partiell gleichen Argumentenaufruf austatten also:
Code: Alles auswählen
func1(a,b, common):
#do stuff with a,b
#do common stuff with common
func2(c, d, common):
#do different stuff with c,d
#do common stuff with common
Decorator verwenden müsse um dieses Problem zu lösen und man am ende nur noch schreiben muss:
Code: Alles auswählen
def wrapper(common):
#do common stuff
@wrapper
func1(a, b):
#do ab stuff
@wrapper
func2(c, d):
#do c d stuff
Code: Alles auswählen
func1(a,b,common)
->wrapper(func1)(a, b, common)
statt:
->wrapper(common)(func1)(a, b)
Wie komme ich nun von wrapper auf common, entferne common aus den *args und **kwargs (und wenn ich das richtig sehe müsste man ja auch noch vlt. gesetzte Default-Werte entfernen die aber von dem was ich gelesen habe nur als Tuple vorliegen und nicht den Namen der Variable enthalten)? An die gesetzten Variablen sollte ich ja wie hier kommen https://wiki.python.org/moin/PythonDeco ... _Arguments aber damit habe ich ja noch nicht die möglichen Defaultwerte oder?
Noch etwas zu common:
Letztendlich geht es hier um eine Retry funktion wie in http://www.python-forum.de/viewtopic.ph ... ry#p242410 nur das ich die Parameter für die Retry Funktion beim Aufrufen der Funktion haben möchte statt über der Funktionsdefinition.
Entschuldigt bitte, wenn ich etwas verwirrt klinge aber irgendwie verstehe ich gerade nicht wirklich viel
Vlt. kann mich ja jemand etwas erleuchten
Freue mich auf Antworten und ein frohes neues Jahr!
p91