Pitón

Módulo de inspección de Python

Módulo de inspección de Python

Descripción general

¿Alguna vez se preguntó qué tan genial sería tener el poder de 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 cadena de documentos, producir documentación para un fragmento de código automáticamente. Déjame decirte, esto es 100% posible con Python inspeccionar módulo.

Módulo de inspección de Python

Pitón inspeccionar módulo nos permite inspeccionar objetos de un programa en ejecución, obtener el código fuente de un módulo, obtener la cadena de documentación asociada con ese módulo, leer la firma del método de una función en Python y mucho más. De esta manera, podemos construir proyectos que produzcan documentación de código en vivo para nuestros propios proyectos. Esto significa que solo tenemos que hacer los comentarios necesarios en nuestro código Python y podemos dejar el resto del trabajo a Python para que nos produzca la documentación.

Usando código de muestra

Para entender cómo Python inspeccionar módulo funciona, usaremos una de nuestras propias definiciones 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 function_level_function_módulo (arg1, arg2 = 'predeterminado', * args):
"" "Soy una función a nivel de módulo."" "
var_local = arg1 * 2
devolver local_var
clase Persona (objeto):
"" "Definición de la clase Persona."" "
def __init __ (yo, nombre):
uno mismo.nombre = nombre
def get_name (self):
"Devuelve el nombre de la instancia."
Regresar.nombre
person_obj = Person ('muestra_instancia')
clase Estudiante (Persona):
"" "Esta es la clase Estudiante, hijo de la clase Persona.
"" "
# Este método no es parte de la clase Person.
def do_something_else (self):
"" "Aquí se puede hacer cualquier cosa."" "
def get_name (self):
"Anula la versión de la clase Person"
return 'Estudiante (' + self.nombre + ')'

Hemos definido un módulo de muestra para que podamos comenzar a extraer el código fuente y otros componentes de él en ejemplos posteriores que escribimos. Empecemos.

Módulo de inspección

El módulo de 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 primero haciendo una importación para él. Esta declaración de importación también estará presente en todos los scripts que escribamos en secciones posteriores. Aquí hay un programa de muestra con el que inspeccionamos nuestro módulo:

importar inspeccionar
importar linuxhint
para nombre, datos en inspeccionar.getmembers (linuxhint):
si nombre.comienza con('__'):
Seguir
impresión(' : !r '.formato (nombre, datos))

Esto es lo que obtenemos con este comando:

Módulo de inspección de Python


La salida nos proporciona los detalles sobre cuántas clases, funciones y objetos existen en este módulo cuando se ejecuta el script.

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:

importar inspeccionar
importar linuxhint
para clave, datos en inspeccionar.getmembers (linuxhint, inspeccionar.isclass):
impresión(' : !r '.formato (clave, datos))

Veamos el resultado de este comando:

Python inspecciona la clase del módulo


La salida es exactamente la misma, solo que esta vez, solo las definiciones de clase se imprimieron en la consola.

Inspeccionar métodos en una clase

Los métodos son los que definen el comportamiento de una clase en POO y proporcionan información sobre cómo se modificará el comportamiento de un Objeto a medida que se invocan los métodos. Es por esta razón que 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:

importar inspeccionar
de pprint importar pprint
importar linuxhint
pprint (inspeccionar.getmembers (linuxhint.Persona, inspeccionar.es función))

Esto es lo que obtenemos con este comando:

Inspeccionando un método de clase


La salida solo muestra la definición del método de cada método presente.

Inspeccionar objetos de una clase

Cuando hace una introspección sobre cuánto espacio ocupa cuando ejecutamos un script de Python, es importante saber cuántos objetos de 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:

importar inspeccionar
de pprint importar pprint
importar linuxhint
person = linuxhint.Persona (nombre = 'inspect_getmembers')
pprint (inspeccionar.getmembers (persona, inspeccionar.esmetodo))

Veamos el resultado de este comando:

Inspeccionar objetos de clase


Esto también imprime la dirección de memoria donde vive este objeto durante el curso de este programa.

Inspeccionando Docstring de una clase

La cadena de documentos de un módulo es la parte que realmente informa a un usuario o desarrollador de qué trata este módulo y qué características ofrece. Con el módulo de inspección, podemos obtener la cadena de documentación de un módulo completo para documentarlo mejor. Veamos cómo podemos extraer una cadena de documentos para una clase:

importar inspeccionar
importar linuxhint
print ('Persona.__Doc__:')
imprimir (linuxhint.Persona.__Doc__)
impresión()
print ('getdoc (Persona):')
imprimir (inspeccionar.getdoc (linuxhint.Persona))

Esto es lo que obtenemos con este comando:

Obtener Docstring para la clase

Inspeccionando la fuente de una clase

Finalmente, podemos ver cómo podemos extraer el código fuente completo de una clase en un programa Python también. Esta es una característica importante y nos ayuda a crear herramientas de documentación sobre un módulo de Python. Veamos un ejemplo en acción:

importar inspeccionar
importar linuxhint
imprimir (inspeccionar.getsource (linuxhint.Estudiante))

Esto es lo que obtenemos con este comando:

Obteniendo el código fuente de la clase

Inspeccionar la fuente de un método

De la misma manera que extrajimos el código fuente de una clase, ahora extraeremos el código fuente de un método en nuestro programa Python:

importar inspeccionar
importar linuxhint
imprimir (inspeccionar.getsource (linuxhint.Estudiante.get_name))

Esto es lo que obtenemos con este comando:

Obtener la fuente del método en una clase

Inspección de la firma del método

La firma de un método proporciona una visión profunda sobre lo que hace un método y qué entrada 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. Así es como podemos extraer la información relacionada con la firma de un método:

importar inspeccionar
importar linuxhint
imprimir (inspeccionar.firma (linuxhint.module_level_function))

Esto es lo que obtenemos con este comando:

Obtener la firma de un método

Conclusión

En esta lección, analizamos 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í.

Los mejores juegos para jugar con el seguimiento de manos
Oculus Quest presentó recientemente la gran idea del seguimiento manual sin controladores. Con un número cada vez mayor de juegos y actividades que ej...
Cómo mostrar la superposición de OSD en aplicaciones y juegos de Linux en pantalla completa
Jugar juegos en pantalla completa o usar aplicaciones en modo de pantalla completa sin distracciones puede aislarlo de la información relevante del si...
Las 5 mejores cartas de captura de juegos
Todos hemos visto y amado la transmisión de juegos en YouTube. PewDiePie, Jakesepticye y Markiplier son solo algunos de los mejores jugadores que han ...