[pyar] cómo averiguo en el decorador la clase de un método decorado?

Claudio Freire klaussfreire en gmail.com
Mar Ene 18 00:52:39 ART 2011


2011/1/18 Mariano Garcia Berrotarán <garcia.berrotaran en gmail.com>

> Hola!, estoy muy apurado saliendo así que no tuve tiempo de leer todo,
> asi que perdón si le pifio:
>
> 2011/1/17 Nicolas Sarubbi <nicosarubbi en gmail.com>:
> > def deco(f):
> >    cls = f.im_class    # debería retornar la clase a la que pertenece el
> método
>
> si querés agarrar la clase desde adentro del decorador, tendrías que hacer
> esto:
>
>
> from functools import wraps
>
> @wraps(f)
> def deco(f):
>    cls = f.__class__
>

No no...

El decorador se aplica a la función plana, antes de asociarla a la clase. O
sea, antes de convertirla en un método.

Así que f no tiene im_class.

Probablemente te sea mucho más directo usar decoradores de clase (si usás
python 2.6+) junto con el decorador sobre las funciones. El decorador de la
función marcaría las funciones como decoradas (agregándoles algún atributo),
y el de la clase agregaría la variable de clase que mencionás.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110118/8f3672c4/attachment.html>


More information about the pyar mailing list