Was ich hier also suche, ist so etwas wie PHPs drucken_r Funktion.
So kann ich meine Skripte debuggen, indem ich den Zustand des betreffenden Objekts sehe.
Was ich hier also suche, ist so etwas wie PHPs drucken_r Funktion.
So kann ich meine Skripte debuggen, indem ich den Zustand des betreffenden Objekts sehe.
Ich habe die Antwort, in der nur pprint erwähnt wird, hochgestuft. Um das klarzustellen: Wenn Sie alle Werte in einer komplexen Datenstruktur, dann tun Sie etwas wie:
from pprint import pprint
pprint(my_var)
Wo meine_Var ist die Variable, die Sie interessiert. Wenn ich pprint(vars(my_var))
Ich habe nichts gefunden, und andere Antworten hier haben nicht geholfen oder die Methode sah unnötig lang aus. In meinem speziellen Fall hatte der Code, den ich untersuchte, übrigens ein Wörterbuch von Wörterbüchern.
Es lohnt sich, darauf hinzuweisen, dass Sie bei einigen benutzerdefinierten Klassen einfach mit einer wenig hilfreichen <someobject.ExampleClass object at 0x7f739267f400>
Art der Ausgabe. In diesem Fall müssen Sie möglicherweise eine __str__
Methode, oder versuchen Sie eine der anderen Lösungen.
Ich habe auch festgestellt, dass in einem Fall, in dem ich diese Meldung erhielt object
Art der Ausgabe, vars()
zeigte mir, was ich wollte. Eine bessere Lösung, um beide Fälle abzudecken, wäre also, beides einzeln zu versuchen. Aber mit vars()
kann zum Beispiel manchmal eine Ausnahme auslösen, TypeError: vars() argument must have __dict__ attribute
.
Ich würde immer noch gerne etwas Einfaches finden, das in allen Szenarien funktioniert, ohne Bibliotheken von Drittanbietern.
Um "myObject" loszuwerden:
from bson import json_util
import json
print(json.dumps(myObject, default=json_util.default, sort_keys=True, indent=4, separators=(',', ': ')))
Ich habe vars() und dir() ausprobiert; beide schlugen für das, was ich suchte, fehl. vars() funktionierte nicht, weil das Objekt kein __dict__ hatte (exceptions.TypeError: vars()-Argument muss __dict__-Attribut haben). dir() war nicht das, was ich suchte: es ist nur eine Auflistung von Feldnamen, gibt nicht die Werte oder die Objektstruktur.
Ich denke, json.dumps() würde für die meisten Objekte ohne default=json_util.default funktionieren, aber ich hatte ein Datetime-Feld im Objekt, so dass der Standard-Json-Serializer fehlschlug. Siehe Wie zu überwinden "datetime.datetime nicht JSON serializable" in Python?
Ich musste DEBUG-Informationen in einigen Protokollen ausdrucken und konnte pprint nicht verwenden, weil es die Funktion unterbrechen würde. Stattdessen habe ich dies getan und praktisch das Gleiche erhalten.
DO = DemoObject()
itemDir = DO.__dict__
for i in itemDir:
print '{0} : {1}'.format(i, itemDir[i])
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.