Estoy tratando de entender la decoración decoradores, y quería probar el siguiente:decorar decoradores: tratar de conseguir mi cabeza alrededor de la comprensión de que
Digamos que tengo dos decoradores y aplicarlos a la función hola:
def wrap(f):
def wrapper():
return " ".join(f())
return wrapper
def upper(f):
def uppercase(*args, **kargs):
a,b = f(*args, **kargs)
return a.upper(), b.upper()
return uppercase
@wrap
@upper
def hello():
return "hello","world"
print hello()
entonces tengo que empezar a añadir otros decoradores para otras funciones, pero en general el decorador envoltura se "envuelva todos ellos"
def lower(f):
def lowercase(*args, **kargs):
a,b = f(*args, **kargs)
return a.lower(), b.lower()
return lowercase
@wrap
@lower
def byebye():
return "bye", "bye"
Ahora, ¿cómo puedo escribir un decorador, con la bruja que puedo decorar mis decoradores inferior y superior:
@wrap
def lower():
...
@wrap
def upper():
...
para lograr el mismo resultado que el anterior sólo haciendo:
@upper
def hello():
...
@lower
def byebye():
...
Probablemente desee leer esto: http://stackoverflow.com/questions/739654/understanding-python-decorators. Hay un ejemplo de decoración de decoradores al final, pero la respuesta lo introduce lentamente. –