J'essaie d'obtenir une variable locale d'un décorateur. Un exemple:Obtention de variables locales de la fonction
def needs_privilege(privilege, project=None):
"""Check whether the logged-in user is authorised based on the
given privilege
@type privilege: Privilege object, id, or str
@param privilege: The requested privilege"""
def validate(func, self, *args, **kwargs):
"""Validator of needs_privillige"""
try: check(self.user, privilege, project)
except AccessDenied:
return abort(status_code=401)
else:
return func(self, *args, **kwargs)
return decorator(validate)
Après la décoration d'une fonction, comme ceci:
@needs_privilege("some_privilege")
def some_function():
pass
Je voudrais récupérer la variable 'privilige' (qui valide() utilise) à partir une_fonction. Après avoir cherché plus d'une heure, je me sens plutôt perdu. Est-ce possible?
Modifier: Permettez-moi de décrire mon problème un peu plus à fond: puis-je obtenir la chaîne « some_prvilege » sans exécuter une_fonction? Quelque chose comme:
a = getattr(module, 'somefunction')
print a.decorator_arguments
? Merci de m'avoir aidé jusqu'à présent!
Plusieurs personnes sont venues avec essentiellement la même réponse, mais ce qui est clair est de savoir si vous avez besoin du package décorateur (avec 'decorator (validate)'). Est-ce une exigence? – snapshoe
Non, ce n'est pas une exigence. Ma question a été répondue dans ce fil (voir ci-dessous). Merci les gars/filles! – Martijn