Archiv der Kategorie: Python

PowerShell versus Python – GetMember versus dir()

Bei PowerShell ist Get-Member nicht umsonst eines der wichtigsten Cmdlets. Dank Get-Member erfährt man, welche Members eine Objekt besitzt. Und das ist bei einer Scripting-Umgebung, bei der alles ein Objekt ist, sehr viel wert.

Auch bei Python ist alles ein Objekt (eigentlich andersherum, da Python ca. 15 Jahre älter ist), leider gibt es ein direktes Pendant zu Get-Member (zumal es auch keine Pipeline gibt). Es gibt aber eine Function, die Get-Member relativ nahe kommt. Sie trägt den ungewöhnlichen Namen dir(). Warum ungewöhnlich? Weil dieser Name seit den Zeiten von GW-Basic für einen Befehl/Function steht, die einen Verzeichnisinhalt auflistet. Aber ganz unpassend ist der Name nicht.

Der folgende Befehl geht noch ein wenig weiter, in dem dank List Comprehensions nur Members eines Objekts ausgegeben werden, die nicht mit einem Unterstrich beginnen (damit wird die Ausgabe bereits etwas übersichtlicher).

 [name for name in dir(hits) if not name.startswith("_")]

Die Ausgabe besteht natürlich nicht aus Objekten, sondern lediglich aus Strings. Aber immerhin.

In diesem Vergleich punktet PowerShell. Nicht nur, weil Get-Member mehr Möglichkeiten bietet, sondern weil bei der Rückgabe von dir() etwas Wichtiges fehlt: Die Metadaten über ein Member, also z.B. den Datentyp einer Property.