Einblicke in Python-Objekte gewinnen
In diesem Leitfaden nehmen wir uns die Zeit, um das Konzept der Introspektion in Python eingehend zu beleuchten.
Warum ist Introspektion so bedeutsam? Kernpunkt ist, dass uns Python mit Introspektion die Möglichkeit bietet, in die Tiefen eines Objekts einzudringen. So können wir dessen Zustand, Eigenschaften und Typ erforschen oder ändern. Kurz gesagt, ermöglicht sie uns einen umfassenden Einblick in das Wesen eines Objekts und seine verfügbaren Funktionen.
Python stellt uns eine umfangreiche Palette an Werkzeugen für die Introspektion zur Verfügung. Hier ein Überblick über einige davon:
- type()
Mit diesem Werkzeug lässt sich der Typ eines Objekts aufdecken. So kann man beispielsweise feststellen, ob es sich um eine Liste, ein Dictionary, eine Ganzzahl, einen String usw. handelt.
Beispiel: Eine Liste erstellen>>> var = [1,2,3,4]
Anschließend den Datentyp der Variablen var mit der Funktion type() überprüfen>>> type(var)
Die Funktion type gibt den Datentyp zurück, in diesem Fall eine Liste.<class 'list'>
- dir()
Dieses Instrument bietet eine Übersicht über die Attribute und Methoden, die einem Objekt zugeordnet sind, und erlaubt uns somit einen Einblick in die vielfältigen Funktionen, die ein Objekt bereithält.
Beispiel: Eine Liste erstellen>>> var = [1,2,3,4]
Dann die Liste der Eigenschaften und Methoden, die von einem Objekt vom Typ "Liste" aufgerufen werden können, mittels der Funktion dir() einsehen>>> dir(var)
Die Funktion dir() zeigt die Liste der Eigenschaften und Methoden an:['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', ... usw.]
- id()
Dieses Werkzeug erzeugt eine einzigartige Kennung für das Objekt in Python, was besonders nützlich ist, um zu überprüfen, ob zwei Referenzen auf dasselbe Objekt verweisen.
Beispiel: Ein Tupel erstellen.
>>> var = (1,2,3,4)
Dann die Kennung des Objekts mit der Funktion id() anzeigen>>> id(var)
Die Funktion id() gibt die Speicherreferenz des Objekts zurück.140492943321280
- getattr(), setattr(), und delattr()
Diese Werkzeuge sind dafür konzipiert, Attribute eines Objekts abzurufen, zuzuweisen oder zu löschen. - hasattr()
Dieses Werkzeug untersucht, ob ein Objekt ein bestimmtes Attribut besitzt, und gibt einen booleschen Wert zurück – True, falls das Attribut vorhanden ist, und False, wenn nicht.
Beispiel: Ein Tupel erstellen.>>> var = (1,2,3,4)
Ansch ließend überprüfen, ob es das Attribut 'real' besitzt, mit der Funktion hasattr()hasattr(var,'real')
Die Funktion ergibt False, da Tupel das Attribut 'real' nicht haben.False
- in()
Dieses Werkzeug wird genutzt, um zu bestimmen, ob ein bestimmtes Schlüsselwort in einem Objekt vorhanden ist.
Beispiel: Einen String in der Variable var erstellen>>> var = "Python"
Dann überprüfen, ob die Teilzeichenkette "th" im String enthalten ist, mit der Funktion in()>>> "th" in var
Die Funktion gibt True zurück, da die Teilzeichenkette "th" tatsächlich im String "Python" gefunden wird.True
- is()
Dieses Instrument prüft, ob zwei Objekte dieselbe Speicherreferenz teilen.
Beispiel: Zwei Listen in den Variablen "list1" und "list2" erstellen>>> list1 = [1,2,3]
Dann mit dem Operator "is" überprüfen, ob die beiden Objekte dieselbe Speicherreferenz haben
>>> list2 = [1,2,3]>>> list1 is list2
Das Ergebnis ist False, weil die beiden Listen, obwohl identisch, unterschiedliche Speicherreferenzen haben, d.h., sie sind als zwei getrennte Objekte im Speicher abgelegt.False
- isinstance()
Dieses Werkzeug ist praktisch, um zu verifizieren, ob ein Objekt eine Instanz einer bestimmten Klasse oder eines ihrer Untertypen ist. - issubclass()
Überprüft, ob eine Klasse eine Unterklasse einer anderen ist.
Die Verfügbarkeit dieser Introspektionswerkzeuge kann beim Navigieren durch Python-Code äußerst wertvoll sein.