hacer - patron decorator python
¿Aplicando un decorador a una función importada? (1)
Los decoradores son solo azúcar sintáctica para reemplazar un objeto de función con una versión decorada, donde la decoración es solo una llamada (pasando el objeto de función original). En otras palabras, la sintaxis:
@decorator_expression
def function_name():
# function body
aproximadamente (*) se traduce a:
def function_name():
# function body
function_name = decorator_expression(function_name)
En su caso, puede aplicar su decorador manualmente en su lugar:
from random import randint
randint = decorator(randint)
(*) Cuando se usa @<decorator>
en una función o clase, el resultado de la def
o definición de class
no se vincula (se asigna a su nombre en el espacio de nombres actual) primero. Al decorador se le pasa el objeto directamente de la pila, y solo el resultado de la llamada del decorador queda vinculado.
Quiero importar una función:
from random import randint
y luego aplícale un decorador:
@decorator
randint
Me preguntaba si había algo de azúcar sintáctica para esto (como lo que tengo arriba), o tengo que hacerlo de la siguiente manera:
@decorator
def randintWrapper(*args):
return random.randint(*args)