Modulo inspect

luis miguel morillas morillas en posta.unizar.es
Mie Dic 3 21:15:06 CET 2003


	Asunto: Re: [Python-es] Modulo inspect
	Fecha: mié, dic 03, 2003 at 07:48:01 +0100


Citando a  Francesc Alted (falted en openlc.org):
> 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("__")) ]
> 
>

No sé si es lo que buscas, yo a veces he utilizado:

[x for x in dir(objeto) if not callable(getattr(objeto, x))]

Es decir, extraego lo que no son métodos, funciones, clases ...



-- 

Luis Miguel




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