El 3 de febrero de 2010 23:51, Juanjo Conti <jjconti@???> escribió:
> El día 3 de febrero de 2010 23:06, Marcelo Rinesi
> <marcelo.rinesi@???> 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.
>
>
Parece que anda :)
El ejemplo está muy bueno para los que están empezando con Python y quieren
ver qué cosas uno puede llegar a hacer, cosas que al desconocerla un diría
que son mágicas ;-)
Dejo un post explicándolo
http://www.juanjoconti.com.ar/2010/02/06/aplicar-un-decorador-a-todas-las-funciones-de-un-modulo-en-python/
Saludos!
--
Juanjo Conti
blog: http://www.juanjoconti.com.ar