Ce décorateur a fait le nom de la méthode de la disposition à l'intérieur de la fonction en lui passant comme argument mot-clé.
from functools import wraps
def pass_func_name(func):
"Name of decorated function will be passed as keyword arg _func_name"
@wraps(func)
def _pass_name(*args, **kwds):
kwds['_func_name'] = func.func_name
return func(*args, **kwds)
return _pass_name
Vous pouvez l'utiliser de cette façon:
@pass_func_name
def sum(a, b, _func_name):
print "running function %s" % _func_name
return a + b
print sum(2, 4)
Mais peut-être que vous voulez écrire ce que vous voulez directement à l'intérieur du décorateur lui-même. Ensuite, le code est un exemple de la façon d'obtenir le nom de la fonction dans un décorateur. Si vous donnerons plus de détails sur ce que vous voulez faire dans la fonction, qui exige que le nom, peut-être que je peux suggérer quelque chose d'autre.