martes, 10 de mayo de 2016

Listar funciones de un modulo en python

Puede sucedernos en algun momento que necesitemos saber que funciones contiene una clase o modulo de python para, por ejemplo, comparar clases o saber si podemos usar tal o cual funcion. 
En principio existe un atributo de todo objeto en python que es COSA.__dict__ que contiene tanto las funciones como otras informaciones que podrían molestar por momentos. 

Para filtrar el resultado de __dict__ podemos usar ciertos artilugios, para mostrarlo empecemos por crear una nueva clase con solo dos funciones:

>>> import types
>>> class Foo:
...     def F1(): pass
...     def F2(): pass
...
 

El atributo __dict__ nos devuelve demasiada información innecesaria
 
>>> Foo.__dict__
{'F1': <function F1 at 0x7f9cc85b07d0>, '__module__': '__main__', 'F2': <function F2 at 0x7f9cc85b0848>, '__doc__': None}


Podemos filtrar los elementos que no deseamos y retornar solo los nombres.

>>> [a for a in Foo.__dict__ if isinstance(Foo.__dict__.get(a), types.FunctionType)]
['F1', 'F2']
>>>

Espero que les haya sido de utilidad y hasta otro momento.

Saludos!

No hay comentarios:

Publicar un comentario