2010-08-24 8 views

Antwort

13

verwenden, um das getmembers Attribut des inspect Modul

Es wird eine Liste von (key, value) Tupel zurück. Es erhält den Wert von wenn verfügbar und verwendet getattr, wenn das kein entsprechender Eintrag ist. Es kann Sie davor bewahren, ein paar Zeilen Code für diesen Zweck zu schreiben.

6

aktualisieren

Es gibt bessere Möglichkeiten, dies als dir zu tun. Siehe andere Antworten.

Original-Antwort

Verwenden Sie die integrierte Funktion dir(fp) die Attribute fp zu sehen.

+0

großes Dankeschön, jetzt kann ich nur durch diese durchlaufen und 'key = Objekt [Wert]' (Schlüssel = Wert) drucken. Gibt es einen besseren Weg? –

+0

Ich kann nicht von einer anderen Art und Weise denken erwarten vielleicht 'getattr', eine andere in Funktion gebaut. –

+1

Siehe das Modul 'inspect'. – aaronasterling

16

Wenn Sie das gesamte Objekt auswerfen möchten, können Sie das pprint-Modul verwenden, um eine hübsch gedruckte Version davon zu erhalten.

from pprint import pprint 

pprint(my_object) 

# If there are many levels of recursion, and you don't want to see them all 
# you can use the depth parameter to limit how many levels it goes down 
pprint(my_object, depth=2) 

Edit: Ich habe vielleicht falsch verstanden, was Sie mit ‚Objekt‘ gemeint - wenn Sie wollen, auf Klasseninstanzen suchen, im Gegensatz zu den grundlegenden Datenstrukturen wie dicts, Sie können am inspect Modul aussehen soll stattdessen.

0

Ich bin überrascht, dass niemand sonst Pythons __str__ Methode erwähnt, die eine String-Darstellung eines Objekts bietet. Leider scheint es in pdb nicht automatisch zu drucken.

Man kann auch __repr__ dafür verwenden, aber __repr__ hat andere Anforderungen: Zum einen müssen Sie eval() die Ausgabe von __repr__ der Lage sein.