J'écris un décorateur qui saisira TypeError pour le nombre incorrect d'arguments dans un appel de fonction et imprimera un message personnalisé. Le code est ici:Conserver la signature dans Decorator python 2
import inspect
def inspect_signature(f):
def decorate(*args, **kwargs):
try:
f(*args, **kwargs)
except TypeError as e:
print('Failed to call "{}" with signature {}. Provided args={} and kwargs={}.'.format(
f.__name__, inspect.getargspec(f).args, args, kwargs))
return f
return decorate
@inspect_signature
def func(foo, bar):
pass
func('a')
func('a', 'b')
Je reçois la sortie suivante:
Failed to call "func" with signature ['foo', 'bar']. Provided args=('a',) and kwargs={}.
Called successfully with foo=a, bar=b
ArgSpec(args=[], varargs='args', keywords='kwargs', defaults=None)
La signature fonction est vide. S'il vous plaît me suggérer une solution comment puis-je le conserver? PS: J'utilise python2 et je ne peux pas passer en python3.
J'ai mis à jour la réponse. Avez-vous eu ça? –