2009-08-15 8 views
24

Estoy tratando de usar una biblioteca de Python escrita en C que no tenga documentación de ningún tipo. Quiero utilizar la introspección para, al menos, ver qué métodos y clases hay en los módulos. ¿Alguien tiene una función o biblioteca que pueda usar para enumerar las funciones (con listas de argumentos) y las clases (con métodos y variables de miembros) dentro de un módulo?¿Cómo puedo enumerar los métodos en un módulo de Python 2.5?

Encontré this article sobre la introspección de Python, pero estoy bastante seguro de que no se aplica a Python 2.5. Gracias por la ayuda.

Respuesta

51

Aquí hay algunas cosas que se pueden hacer al menos:

import module 

print dir(module) # Find functions of interest. 

# For each function of interest: 
help(module.interesting_function) 
print module.interesting_function.func_defaults 
4

Las funciones dir() muestran todos los miembros que tiene un módulo.

5

Sólo esto es bastante bueno también:

import module 
help(module) 

se imprimirá la cadena de documentación para el módulo, a continuación, mostrar el contenido de la módulo, imprimiendo sus documentos también.

+0

No encuentro ninguna forma alternativa de obtener el contenido de la ayuda, particularmente el "CONTENIDO DEL PAQUETE" es lo que estoy buscando. Esto está en el texto de ayuda, pero ninguna de las otras respuestas proporciona una forma de obtenerlo algorítmicamente. – AlanSE

+0

ah, lo encontré dentro del código fuente para este https://github.com/python/cpython/blob/ac317700ce7439e38a8b420218d9a5035bba92ed/Lib/pydoc.py#L733, con el patrón de 'para el importador, nombre mod, ispkg en pkgutil.iter_modules (object .__ path __): ' – AlanSE

12

Mark Pilgrim's chapter 4, que mencionas, en realidad se aplica muy bien a Python 2.5 (y cualquier otra versión reciente 2.*, gracias a la compatibilidad con versiones anteriores). Mark no menciona help, pero veo que otras respuestas sí.

Una pieza clave que nadie (incluido Mark ;-) parece haber mencionado es inspect, un módulo excelente en la biblioteca estándar de Python que realmente ayuda con la introspección avanzada.

Cuestiones relacionadas