Python: pasar los valores predeterminados de los argumentos de la función a * args o ** kwargs
Considere un ejemplo:
def decorator(func):
def wrapper(*args, **kwargs):
print(args, kwargs)
func(*args, **kwargs)
return wrapper
@decorator
def foo(x, y, z=0):
pass
foo(5, 5)
Salida:
(5, 5) {}
Por qué no(5, 5) {'z': 0}
? Cómo pasar todos los valores predeterminados de la funciónfoo
a*args
o**kwargs
usando solo decorador (para funciones) o metaclase (para métodos de clase, p. ej.__init__
)?