Python Inspect Modul

Python Inspect Modul

Überblick

Immer gefragt, wie cool es wäre, die Macht zu haben, den Quellcode eines anderen Python -Moduls in Ihrem eigenen Programm tatsächlich zu erhalten? Dies wird Ideen und Türen für so viele Möglichkeiten eröffnen, wie die Verarbeitung des Quellcode eines Moduls zu verarbeiten, die Dokumentation zu erhalten und Dokumentation für ein Code automatisch zu erstellen. Lassen Sie mich Ihnen sagen, dass dies bei Python zu 100% möglich ist prüfen Modul.

Python Inspect Modul

Python prüfen Das Modul ermöglicht es uns, Objekte eines laufenden Programms zu überprüfen, den Quellcode eines Moduls zu erhalten, die mit diesem Modul verknüpfte Dokument. Auf diese Weise können wir Projekte erstellen, die Live -Code -Dokumentation für unsere eigenen Projekte erstellen. Dies bedeutet, dass wir nur die notwendigen Kommentare zu unserem Python -Code abgeben müssen, und wir können den Rest des Jobs Python selbst überlassen, um die Dokumentation für uns zu erstellen.

Unter Verwendung von Beispielcode

Um zu verstehen, wie Python ist prüfen Modul funktioniert, wir werden eine unserer eigenen Beispielcode -Definition in Python verwenden, die nur Vererbung in Python zeigt und wie Objekte hergestellt werden. Schauen wir uns das Beispielmodul an, das wir hier im Rest des Tutorials verwenden werden:

Def Module_Level_function (arg1, arg2 = 'Standard', *args):
"" "Ich bin eine Funktion auf Modulebene."" "
local_var = arg1 * 2
RECHTEN SIE LOCAL_VAR
Klassenperson (Objekt):
"" "Definition für die Personklasse."" "
def __init __ (Selbst, Name):
selbst.Name = Name
def get_name (self):
"Gibt den Namen der Instanz zurück."
Rückkehr selbst.Name
Person_obj = Person ('sample_instance')
Klassenstudent (Person):
"" "Dies ist die Schülerklasse, das Kind der Personklasse.
"" "
# Diese Methode ist nicht Teil der Personklasse.
Def do_Something_else (Selbst):
"" "Hier kann alles getan werden."" "
def get_name (self):
"Überschreiben Sie die Version von der Personklasse"
Return 'Student (' + Selbst.Name + ')'

Wir haben ein Beispielmodul definiert, damit wir den Quellcode und andere Komponenten in späteren Beispielen extrahieren können, die wir schreiben. Lass uns anfangen.

Modul inspizieren

Das obige Python -Modul wird in einer Datei namens gespeichert LinuxHint.py In demselben Verzeichnis, in dem wir unsere neuen Python -Skripte machen werden. Wir können ein Modul in Python inspizieren, indem wir zuerst einen Import dafür machen. Diese Importanweisung wird in allen Skripten vorhanden sein, die wir auch in späteren Abschnitten schreiben. Hier ist ein Beispielprogramm, mit dem wir unser Modul inspizieren:

importieren
LinuxHint importieren
Für den Namen inspizieren Daten.Getmitglieder (LinuxHint):
Wenn Name.beginnt mit('__'):
weitermachen
drucken(' : !R'.Format (Name, Daten))

Hier ist, was wir mit diesem Befehl zurückbekommen:

Python Inspect Modul


Die Ausgabe liefert uns die Details darüber, wie viele Klassen, Funktionen und Objekte in diesem Modul vorhanden sind, wenn das Skript ausgeführt wird.

Unterricht in einem Modul inspizieren

Das obige Beispiel, das wir gezeigt haben, präsentierte alle Details eines Moduls gleichzeitig. Wenn wir nur die Informationen zu den Klassen im Modul erhalten möchten, können wir das gleiche erhalten wie:

importieren
LinuxHint importieren
Für den Schlüssel sind Daten in Überprüfung.Getmitglieder (LinuxHint, inspizieren.isclass):
drucken(' : !R'.Format (Schlüssel, Daten))

Sehen wir uns die Ausgabe für diesen Befehl an:

Python inspizieren Modulklasse


Die Ausgabe ist genau die gleiche, nur dass diesmal nur die Klassendefinitionen in die Konsole gedruckt wurden.

Inspizieren der Methoden in einer Klasse

Die Methoden sind diejenigen, die das Verhalten einer Klasse in OOPS definieren und Informationen darüber geben. Aus diesem Grund ist es wichtig, alle Methoden zu dokumentieren, die in einer Klasse oder einem Modul existieren. Wir können Informationen zu einer solchen Methode erhalten:

importieren
von pprint import pprint
LinuxHint importieren
pprint (inspizieren.Getmitglieder (LinuxHint.Person, inspizieren.Isfunktion)))

Hier ist, was wir mit diesem Befehl zurückbekommen:

Untersuchung einer Unterrichtsmethode


Die Ausgabe zeigt nur die Methodendefinition jeder vorhandenen Methode an.

Objekte einer Klasse inspizieren

Wenn Sie in der Aussicht auf die Ausführung eines Python -Skripts in der Lage sind, zu wissen, wie viele Objekte für die Klasse für die Klasse in einem Programm instanziiert sind. Um dies zu wissen, können wir auch Informationen über Objekte einer Klasse in einem Modul erhalten:

importieren
von pprint import pprint
LinuxHint importieren
Person = LinuxHint.Person (name = 'inspect_getMembers')
pprint (inspizieren.Getmitglieder (Person, inspizieren.Ismethod))

Sehen wir uns die Ausgabe für diesen Befehl an:

Objekte des Unterrichts inspizieren


Dies druckt auch die Speicheradresse, in der dieses Objekt im Verlauf dieses Programms lebt.

Untersuchung einer Klasse einer Klasse

Der Dokument eines Moduls ist der Teil, der einen Benutzer oder einen Entwickler tatsächlich darüber informiert. Mit dem inspizierten Modul können wir die Dokumentation eines vollständigen Moduls erhalten, um es besser zu dokumentieren. Lassen Sie uns sehen, wie wir Docstring für eine Klasse extrahieren können:

importieren
LinuxHint importieren
Print ('Person.__doc__: ')
drucken (LinuxHint.Person.__doc__)
drucken()
print ('getdoc (Person):')
drucken (inspizieren.getDoc (LinuxHint.Person))

Hier ist, was wir mit diesem Befehl zurückbekommen:

Docstring für den Unterricht erhalten

Quelle einer Klasse inspizieren

Schließlich können wir sehen, wie wir auch in einem Python -Programm den vollständigen Quellcode einer Klasse extrahieren können. Dies ist eine wichtige Funktion, die uns hilft, Dokumentationstools über ein Python -Modul zu erstellen. Lassen Sie uns ein Beispiel in Aktion sehen:

importieren
LinuxHint importieren
drucken (inspizieren.Getource (LinuxHint.Student))

Hier ist, was wir mit diesem Befehl zurückbekommen:

Quellcode des Unterrichts erhalten

Quelle einer Methode inspizieren

Genauso wie wir den Quellcode einer Klasse extrahiert haben, werden wir nun den Quellcode einer Methode in unserem Python -Programm extrahieren:

importieren
LinuxHint importieren
drucken (inspizieren.Getource (LinuxHint.Student.get_name))

Hier ist, was wir mit diesem Befehl zurückbekommen:

Methodenquelle in einer Klasse erhalten

Untersuchung der Methode Signatur

Die Signatur einer Methode liefert einen tiefen Einblick darüber, was eine Methode tut und welche Eingaben nimmt. Es bietet uns die Befugnis, eine Methode besser zu dokumentieren, da die Dokumentation einer Methode unvollständig ist, ohne zu wissen, welche Eingaben sie dauert. So können wir die Informationen zu einer Methodensignatur extrahieren:

importieren
LinuxHint importieren
drucken (inspizieren.Signatur (LinuxHint.module_level_function)))

Hier ist, was wir mit diesem Befehl zurückbekommen:

Signatur einer Methode erhalten

Abschluss

In dieser Lektion haben wir uns angesehen, wie wir das Python -Inspektionsmodul verwenden können, um den Quellcode und viele andere interne Funktionen eines Python -Programms zu betrachten. Lesen Sie hier mehr Python -basierte Beiträge.