Si j'ai la fonction suivante:Comment puis-je utiliser des arguments nommés dans un décorateur?
def intercept(func):
# do something here
@intercept(arg1=20)
def whatever(arg1,arg2):
# do something here
Je voudrais pour intercepter au feu uniquement lorsque arg1 est 20. Je voudrais être en mesure de passer des paramètres nommés à la fonction. Comment pourrais-je accomplir cela?
Voici un petit exemple de code:
def intercept(func):
def intercepting_func(*args,**kargs):
print "whatever"
return func(*args,**kargs)
return intercepting_func
@intercept(a="g")
def test(a,b):
print "test with %s %s" %(a,b)
test("g","d")
Cette lance le TypeError d'exception suivante: interception() a obtenu un argument de mot-clé inattendu 'a'
Donc, il n'y a pas un moyen d'appliquer cela à n'importe quelle fonction? – Geo
Retravaillé la réponse. –