Descripción general
Alguna vez se preguntó qué tan genial sería tener el poder para obtener el código fuente de algún otro módulo de Python en su propio programa? Esto abrirá ideas y puertas a tantas oportunidades, como procesar el código fuente de un módulo, obtener su documentación, produciendo documentación para una pieza de código automáticamente. Déjame decirte que esto es 100% posible con Python's inspeccionar módulo.
Python Inspect Module
Pitón inspeccionar El módulo nos permite inspeccionar objetos de un programa en ejecución, obtener el código fuente de un módulo, obtener el documento asociado con ese módulo, leer la firma del método de una función en Python y mucho más. De esta manera, podemos crear proyectos que producen documentación de código en vivo para nuestros propios proyectos. Esto significa que solo tenemos que hacer los comentarios necesarios sobre nuestro código de Python y podemos dejar el resto del trabajo a Python para producir la documentación para nosotros.
Uso del código de muestra
Para entender cómo Python's inspeccionar Funciona el módulo, utilizaremos una de nuestra propia definición de código de muestra en Python que solo demuestra la herencia en Python y cómo se hacen los objetos. Veamos el módulo de muestra que usaremos en el resto del tutorial aquí:
Def MODULE_LEVEL_FUNCTION (arg1, arg2 = 'default', *args):
"" "Soy una función a nivel de módulo."" "
local_var = arg1 * 2
devolver local_var
Persona de clase (objeto):
"" "Definición para la clase de persona."" "
def __init __ (self, nombre):
ser.nombre = nombre
Def get_name (self):
"Devuelve el nombre de la instancia."
volver a ser.nombre
persona_obj = persona ('sample_instance')
Estudiante de clase (persona):
"" "Esta es la clase de estudiantes, clase de hijo de persona.
"" "
# Este método no es parte de la clase de persona.
Def do_something_else (self):
"" "Cualquier cosa se puede hacer aquí."" "
Def get_name (self):
"Anular la versión de la clase de persona"
Return 'Student (' + Self.nombre + ')'
Hemos definido un módulo de muestra para que podamos comenzar a extraer el código fuente y otros componentes en ejemplos posteriores que escribimos. Empecemos.
Módulo de inspección
El módulo Python anterior se guarda en un archivo llamado Linuxhint.py En el mismo directorio donde haremos nuestros nuevos scripts de Python. Podemos inspeccionar un módulo en Python haciendo primero una importación para él. Esta declaración de importación estará presente en todos los scripts que escribimos en secciones posteriores también. Aquí hay un programa de muestra con el que inspeccionamos nuestro módulo:
Inspeccionar la importación
Importar Linuxhint
Para el nombre, datos en inspeccionar.GetMembers (Linuxhint):
Si nombre.comienza con('__'):
continuar
imprimir(' : !r '.formato (nombre, datos))
Esto es lo que recuperamos con este comando:
Python Inspect Module
Inspeccionar clases en un módulo
El ejemplo anterior que mostramos presentó todos los detalles de un módulo a la vez. Si queremos obtener solo la información relacionada con las clases en el módulo, podemos obtener lo mismo que:
Inspeccionar la importación
Importar Linuxhint
Para la clave, los datos en inspeccionar.GetMembers (Linuxhint, Inspect.iSclass):
imprimir(' : !r '.formato (clave, datos))
Veamos la salida para este comando:
Clase de módulo de inspección de Python
Inspeccionar métodos en una clase
Los métodos son el que define el comportamiento de una clase en OOPS y proporciona información sobre cómo se modificará un comportamiento de objetos a medida que los métodos se llamen a ellos. Se debe a esta razón, es importante documentar todos los métodos que existen en una clase o un módulo. Podemos obtener información relacionada con un método como este:
Inspeccionar la importación
de Pprint import pprint
Importar Linuxhint
PPRINT (inspeccionar.GetMembers (Linuxhint.Persona, inspeccionar.ISFunction))
Esto es lo que recuperamos con este comando:
Inspeccionar un método de clase
Inspeccionar objetos de una clase
Cuando te introspectas cuánto espacio está ocupado cuando ejecutamos un script de Python, es importante saber cuántos objetos para la clase se instancian para la clase en un programa. Para saber esto, también podemos obtener información sobre los objetos de una clase en un módulo:
Inspeccionar la importación
de Pprint import pprint
Importar Linuxhint
persona = Linuxhint.Persona (nombre = 'inspect_getmembers')
PPRINT (inspeccionar.GetMembers (persona, inspeccionar.ismethod))
Veamos la salida para este comando:
Inspeccionar objetos de clase
Inspeccionar el documento de una clase
El documento de un módulo es la parte que realmente informa a un usuario o un desarrollador de lo que se trata este módulo y qué características proporciona. Con el módulo Inspect, podemos obtener el documento de un módulo completo para documentarlo mejor. Veamos cómo podemos extraer documentos para una clase:
Inspeccionar la importación
Importar Linuxhint
Imprimir ('Persona.__doc__:')
Imprimir (Linuxhint.Persona.__doc__)
imprimir()
imprimir ('getDoc (persona):')
Imprimir (inspeccionar.GetDoc (Linuxhint.Persona))
Esto es lo que recuperamos con este comando:
Obtener documento para la clase
Inspeccionar la fuente de una clase
Finalmente, podemos ver cómo podemos extraer el código fuente completo de una clase en un programa de Python también. Esta es una característica importante, así como esto, nos ayuda a construir herramientas de documentación sobre un módulo de Python. Veamos un ejemplo en acción:
Inspeccionar la importación
Importar Linuxhint
Imprimir (inspeccionar.geteource (Linuxhint.Alumno))
Esto es lo que recuperamos con este comando:
Obtener código fuente de clase
Inspeccionar la fuente de un método
De la misma manera que extraemos el código fuente de una clase, ahora extraeremos el código fuente de un método en nuestro programa Python:
Inspeccionar la importación
Importar Linuxhint
Imprimir (inspeccionar.geteource (Linuxhint.Alumno.get_name))
Esto es lo que recuperamos con este comando:
Obtener una fuente de método en una clase
Firma del método de inspección
La firma de un método proporciona una visión profunda sobre lo que hace un método y qué entrada se necesita. Nos proporciona el poder de documentar mejor un método porque la documentación de un método está incompleta sin saber qué entrada se necesita. Aquí está cómo podemos extraer la información relacionada con una firma de método:
Inspeccionar la importación
Importar Linuxhint
Imprimir (inspeccionar.firma (Linuxhint.módulo_level_function))
Esto es lo que recuperamos con este comando:
Obtener firma de un método
Conclusión
En esta lección, observamos cómo podemos hacer uso del módulo de inspección de Python para ver el código fuente y muchas otras características internas de un programa de Python. Lea más publicaciones basadas en Python aquí.