En python, on ne peut décorer une fonction qu'à la définition de celle-ci, pourquoi ne pas avoir étendu aux appels de fonction ?
L'idée typiquement serait de pouvoir décorer une fonction d'une lib externe et donc d'éviter d'avoir à la wrapper en changeant son nom
Un exemple concret avec la librairie requests, on veut vérifier à chaque appel des fonctions get et post que la connection internet est toujours ok et donc on écrit un code qui ressemblerait à ça:
def check_connection(func):
def wrapper(*args, **kwargs):
try:
func(*args, **kwargs)
except ConnectionError:
print('No internet.')
sys.exit(0)
return wrapper
@check_connection
html = requests.get('https://google.fr')
[....]
@check_connection
requests.post('http://httpbin.org/post', data = {'key':'value'})
Je me retrouve souvent dans un cas de figure où cette fonctionnalité me manque et donc je me pose la question, y a t-il une méthode Pythonique déjà existante qui m'aurait échappé ?
Sinon, pensez-vous que cette idée est interessante et mérite d'ếtre débattue sur python-ideas ?