El 3 de febrero de 2010 23:51, Juanjo Conti
<jjconti@gmail.com> escribió:
El día 3 de febrero de 2010 23:06, Marcelo Rinesi
<marcelo.rinesi@gmail.com> escribió:
>
> Una pregunta: ¿es posible decorar funciones "por default" de una
> manera más o menos elegante? Por ejemplo, hacer algo de manera tal que
> a toda función que uno defina se le aplique automáticamente el
> decorador monad_aware. (No digo que sea una buena idea hacerlo, o
> siquiera que quiera hacerlo, pero al menos desde un punto de vista
> teórico, la posibilidad de hackear de manera más implícita el
> mecanismo de aplicación de funciones suena bastante interesante.)
>
Al final de tu módulo, donde tenés las funciones que querés decorar
automáticamente, podés hacer:
import inspect
from monads import monad_aware
for n,v in locals().items():
if inspect.isfunction(v) and n != 'monad_aware': # la segunda
condicion es para no aplicar el decorador al decorador
locals()[n] = monad_aware(v)
No está probado, pero creo que debería funcionar.