Python Ispect Module

Python Ispect Module

Panoramica

Mi chiedevo quanto sarebbe bello avere il potere di ottenere effettivamente il codice sorgente di qualche altro modulo Python nel tuo programma? Ciò aprirà idee e porte a così tante opportunità come l'elaborazione del codice sorgente di un modulo, ottenendo il suo dottore, producendo documentazione per un pezzo di codice automaticamente. Lascia che te lo dica, questo è possibile al 100% con Python ispezionare modulo.

Python Ispect Module

Pitone ispezionare Il modulo ci consente di ispezionare gli oggetti di un programma in esecuzione, ottenere il codice sorgente di un modulo, ottenere il dottore associato a quel modulo, leggere la firma del metodo di una funzione in Python e molto altro. In questo modo, possiamo costruire progetti che producono documentazione di codice dal vivo per i nostri progetti. Ciò significa che dobbiamo solo fare i commenti necessari sul nostro codice Python e possiamo lasciare il resto del lavoro a Python stesso per produrre la documentazione per noi.

Utilizzando il codice di esempio

Per capire come è Python ispezionare Il modulo funziona, useremo una delle nostre definizioni di codice di esempio in Python che dimostra solo l'eredità in Python e come vengono realizzati gli oggetti. Diamo un'occhiata al modulo di esempio che useremo nel resto del tutorial qui:

def module_level_function (arg1, arg2 = 'default', *args):
"" "Sono una funzione a livello di modulo."" "
local_var = arg1 * 2
restituire local_var
persona di classe (oggetto):
"" "Definizione per la classe persona."" "
def __init __ (self, name):
se stesso.nome = nome
def get_name (self):
"Restituisce il nome dell'istanza."
Restituisci se stessi.nome
Person_obj = persona ('Sample_instance')
Studente di classe (persona):
"" "Questa è la classe studentesca, la classe figlio di persona.
"" "
# Questo metodo non fa parte della classe persona.
def do_something_else (self):
"" "Tutto può essere fatto qui."" "
def get_name (self):
"Overriding Version dalla classe persona"
ritorna 'studente (' + self.nome + ')'

Abbiamo definito un modulo di esempio in modo da poter iniziare a estrarre il codice sorgente e altri componenti da esso negli esempi successivi che scriviamo. Iniziamo.

Modulo di ispezione

Il modulo Python sopra viene salvato in un file chiamato Linuxhint.Py Nella stessa directory in cui realizzeremo i nostri nuovi script di Python. Possiamo ispezionare un modulo in Python facendo prima un'importazione. Questa dichiarazione di importazione sarà presente in tutti gli script che scriviamo anche in sezioni successive. Ecco un programma di esempio con cui ispezioniamo il nostro modulo:

Ispezione di importazione
Importa Linuxhint
Per il nome, dati in ispezione.getmembers (Linuxhint):
Se il nome.inizia con('__'):
Continua
stampa(' : !R'.Formato (nome, dati))

Ecco cosa torniamo con questo comando:

Python Ispect Module


L'output ci fornisce i dettagli su quante classi, funzioni e oggetti esistono in questo modulo quando viene eseguito lo script.

Ispezionando le classi in un modulo

L'esempio sopra che abbiamo mostrato ha presentato tutti i dettagli di un modulo contemporaneamente. Se vogliamo ottenere solo le informazioni relative alle classi nel modulo, possiamo ottenere lo stesso di:

Ispezione di importazione
Importa Linuxhint
Per la chiave, i dati in ispezione.getmembers (Linuxhint, ispeziona.isclass):
stampa(' : !R'.Formato (chiave, dati))

Vediamo l'output per questo comando:

Python Ispect Module Class


L'output è esattamente lo stesso, solo che questa volta, solo le definizioni della classe sono state stampate sulla console.

Ispezione dei metodi in una classe

I metodi sono quelli che definisce il comportamento di una classe in OOPS e fornisce informazioni su come un comportamento di oggetti verrà modificato poiché i metodi li vengono chiamati su. È dovuto a questo motivo è importante documentare tutti i metodi che esistono in una classe o in un modulo. Possiamo ottenere informazioni relative a un metodo come questo:

Ispezione di importazione
da pprint import pprint
Importa Linuxhint
pprint (ispezione.getmembers (Linuxhint.Persona, ispezionare.isfunction))

Ecco cosa torniamo con questo comando:

Ispezionando un metodo di classe


L'output visualizza semplicemente la definizione del metodo di ciascun metodo presente.

Ispezionando gli oggetti di una classe

Quando si introspetti su quanto spazio è occupato quando eseguiamo uno script Python, è importante sapere quanti oggetti per la classe sono istanziati per la classe in un programma. Per saperlo, possiamo ottenere informazioni sugli oggetti di una classe anche in un modulo:

Ispezione di importazione
da pprint import pprint
Importa Linuxhint
Person = Linuxhint.Persona (name = 'ispect_getmembers')
pprint (ispezione.getmembers (persona, ispeziona.ismethod))

Vediamo l'output per questo comando:

Ispezionando oggetti di classe


Questo stampa anche l'indirizzo di memoria in cui questo oggetto vive nel corso di questo programma.

Ispezionando il dottore di una classe

Il dottore di un modulo è la parte che in realtà informa un utente o uno sviluppatore di ciò di cui è questo modulo e di cosa fornisce le caratteristiche. Con il modulo di ispezione, possiamo ottenere il dottore di un modulo completo per documentarlo meglio. Vediamo come possiamo estrarre il dottore per una classe:

Ispezione di importazione
Importa Linuxhint
Stampa ('persona.__doc__: ')
Stampa (Linuxhint.Persona.__doc__)
stampa()
print ('getdoc (persona):')
Stampa (ispeziona.GetDoc (Linuxhint.Persona))

Ecco cosa torniamo con questo comando:

Ottenere un dottore per la lezione

Ispezionando la fonte di una classe

Infine, possiamo vedere come possiamo estrarre anche il codice sorgente completo di una classe in un programma Python. Questa è una caratteristica importante e questo ci aiuta a creare strumenti di documentazione su un modulo Python. Vediamo un esempio in azione:

Ispezione di importazione
Importa Linuxhint
Stampa (ispeziona.GetSource (Linuxhint.Alunno))

Ecco cosa torniamo con questo comando:

Ottenere codice di classe sorgente

Ispezionando la fonte di un metodo

Allo stesso modo in cui abbiamo estratto il codice sorgente di una classe, ora estrarremo il codice sorgente di un metodo nel nostro programma Python:

Ispezione di importazione
Importa Linuxhint
Stampa (ispeziona.GetSource (Linuxhint.Alunno.get_name))

Ecco cosa torniamo con questo comando:

Ottenere fonte di metodo in una classe

Firma del metodo di ispezione

La firma di un metodo fornisce una visione profonda di ciò che fa un metodo e di ciò che fa l'input. Ci fornisce la potenza di documentare un metodo migliore perché la documentazione di un metodo è incompleta senza sapere quale input prende. Ecco come possiamo estrarre le informazioni relative a una firma del metodo:

Ispezione di importazione
Importa Linuxhint
Stampa (ispeziona.firma (Linuxhint.module_level_function))

Ecco cosa torniamo con questo comando:

Ottenere la firma di un metodo

Conclusione

In questa lezione, abbiamo esaminato come possiamo utilizzare il modulo di ispezione Python per guardare il codice sorgente e molte altre funzionalità interne di un programma Python. Leggi di più post basati su Python qui.