Modulo inspect

Garito garito en sistes.net
Mie Dic 3 21:07:54 CET 2003


Hola Francesc

Era lo que yo habia pensado pero me parece un sistema un poco feo teniendo
en cuenta lo chulo que es python para esto de la reflexion

En fin, habra que esperar a la proxima version de python!!

Salu2

----- Original Message ----- 
From: "Francesc Alted" <falted en openlc.org>
To: "La lista de python en castellano" <python-es en aditel.org>
Sent: Wednesday, December 03, 2003 7:48 PM
Subject: Re: [Python-es] Modulo inspect


A Dimecres 03 Desembre 2003 18:55, Garito va escriure:
> Hola a todos
>
> Estoy trasteando esto del python un poquillo, concretamente estoy centrado
> en los mecanismos de reflexion de las clases
>
> Necesito poder saber via codigo los miembros de las clases
>
> Para ello uso el modulo inspect que trae una funcion llamada getmembers
con
> la que obtienes un listado de los miembros de un objeto/modulo etc. El
> formato es este
>
> inspect.getmembers(objeto, predicado)
>
> Si no se indica el predicado getmembers te devuelve todos los miembros
(con
> sus valores)
>
> Si se indica el predicado ismethod se devuelven los metodos, isfunction
> para las funciones, etc
>
> Lo que no veo/encuentro es como devolver los atributos de la class Alguien
> sabe como hacer esto?

Pues buena pregunta... Parece ser que no hay nada que enn Python que indique
que un atributo es tal, por la simple razón de que todos los objetos que
culegan de la clase (i.e. existen en el diccionario clase.__dir__) se
consideran tales.

Asi que parece que la única manera va a ser descubrirlos por eliminación. El
problema es que hay que hacer unos cuantos filtros para eliminar candidatos
"no deseados". Yo he hecho a uno pequeño a modo de ejemplo, pero se deberia
completar un poco más. Ahi va:

[x for x in dir(object)
    if (not inspect.ismethod(getattr(a,x)) and
        not inspect.isclass(getattr(a,x)) and
        not x.startswith("__")) ]

Espero que sirva de ayuda.

-- 
Francesc Alted

_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es




Más información sobre la lista de distribución Python-es