Was ist das Python äquivalent von Ruby ' s "inspizieren"?
Ich will nur schnell sehen, das die Eigenschaften und Werte eines Objektes in Python, wie mache ich das im terminal auf einem mac (sehr grundlegende Dinge, nie benutzt python)?
Speziell, ich möchte sehen, was message.attachments
sind in diese Google App Engine Beispiel MailHandler (Bilder, videos, docs, etc.).
Du musst angemeldet sein, um einen Kommentar abzugeben.
verwenden Sie die
getmembers
Attribut desinspect
ModulEs gibt eine Liste von
(key, value)
Tupel. Es wird der Wert ausobj.__dict__
falls vorhanden und verwendetgetattr
wenn es keinen entsprechenden Eintrag inobj.__dict__
. Es können Sie aus dem schreiben ein paar Zeilen code für diesen Zweck.Wenn Sie möchten, dump das gesamte Objekt, können Sie die
pprint
Modul um eine pretty-printed version.Edit: vielleicht habe ich falsch verstanden, was meintest du mit 'Objekt' -, wenn Sie wollen, zu schauen, Klasse Instanzen, im Gegensatz zu einfachen Datenstrukturen wie dicts, möchten Sie vielleicht Blick auf die
inspizieren
Modul statt.Update
Gibt es bessere Möglichkeiten, dies zu tun, als
dir
. Siehe andere Antworten.Ursprüngliche Antwort
Verwenden Sie die integrierte Funktion
dir(fp)
zu sehen die Attributefp
.key = object[value]
(Schlüssel = Wert). gibt es einen besseren Weg?getattr
, eine weitere integrierte Funktion.inspect
Modul.dir
ist eine schöne schnelle, einfache one-liner, erfordert nicht den Import oder nichts.Ich bin überrascht, niemand hat erwähnt, Python
__str__
Methode, die eine string-Darstellung eines Objekts. Leider, es scheint nicht zu drucken automatisch in pdb.Kann man auch mit
__repr__
für die, aber__repr__
hat andere Anforderungen: für eine Sache, Sie sind (zumindest theoretisch) in der Lage sein solleneval()
die Ausgabe von__repr__
obwohl sich diese Anforderung scheint zu sein, durchgesetzt, nur selten.__repr__
als Pendant zu Ruby ' s.inspect
. Ich denke, dass Python 's__str__
ist eher ein Pendant zu Ruby' s.to_s
.