1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| # Décorateur vérifiant les types des paramètres reçus d'une fonction
# En fonction des types déclarés dans sa définition
def cfa(fn) :
def icfa(*args, **dargs) :
an = fn.__code__.co_varnames
if args :
dargs = {}
for k, v in enumerate(args) :
dargs[an[k]] = v
# Vérif des types
for k, v in dargs.items() :
if type(v) != fn.__annotations__[k] :
raise TypeError('Le type du paramètre "' + str(k) + '" doit être de type ' + fn.__annotations__[k].__name__ + ', fourni : ' + str(type(v).__name__))
return(fn(**dargs))
return icfa
@cfa
def tfd(nom:str, age:int, ville:str) -> None :
print('coucou {0} tu as {1} ans et tu habites dans la ville de {2}.'.format(nom, age, ville))
tfd('toto', 12, 'Dijon')
tfd(**{'nom':'belle', 'age':15, 'ville':'Perpignan'})
tfd(12, 19, True) |
Partager