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