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.
Versuchen Sie es einfach Beprint .
Es hilft Ihnen nicht nur beim Drucken von Objektvariablen, sondern auch bei einer schönen Ausgabe, wie dieser hier:
class(NormalClassNewStyle):
dicts: {
},
lists: [],
static_props: 1,
tupl: (1, 2)
Es gibt zwar viele gute Antworten, aber hier ist ein Einzeiler, der die Attribute sowie die Werte angeben kann:
(str(vars(config)).split(",")[1:])
wobei 'config' das betreffende Objekt ist. Ich führe dies als separate Antwort auf, weil ich einfach nur die relevanten Werte des Objekts (ohne __main usw.) ausgeben wollte, ohne Schleifen oder pretty print zu verwenden, und keine passende Antwort gefunden habe.
Vars() scheint die Attribute dieses Objekts anzuzeigen, aber dir() scheint auch die Attribute der übergeordneten Klasse(n) anzuzeigen. Normalerweise braucht man keine geerbten Attribute zu sehen wie str , doc . Diktat etc.
In [1]: class Aaa():
...: def __init__(self, name, age):
...: self.name = name
...: self.age = age
...:
In [2]: class Bbb(Aaa):
...: def __init__(self, name, age, job):
...: super().__init__(name, age)
...: self.job = job
...:
In [3]: a = Aaa('Pullayya',42)
In [4]: b = Bbb('Yellayya',41,'Cop')
In [5]: vars(a)
Out[5]: {'name': 'Pullayya', 'age': 42}
In [6]: vars(b)
Out[6]: {'name': 'Yellayya', 'age': 41, 'job': 'Cop'}
In [7]: dir(a)
Out[7]:
['__class__',
'__delattr__',
'__dict__',
'__dir__',
'__doc__',
'__eq__',
...
...
'__subclasshook__',
'__weakref__',
'age',
'name']
pprint enthält einen "hübschen Drucker" zur Erzeugung ästhetisch ansprechender Darstellungen Ihrer Datenstrukturen. Der Formatierer erzeugt Darstellungen von Datenstrukturen, die vom Interpreter korrekt geparst werden können und auch für einen Menschen leicht zu lesen sind. Die Ausgabe erfolgt nach Möglichkeit in einer einzigen Zeile, bei Aufteilung auf mehrere Zeilen wird sie eingerückt.
Für alle, die sich mit
vars()
nicht alle Attribute zurückgeben.dir()
nicht die Werte der Attribute zurückgeben.Der folgende Code druckt todo Eigenschaften von obj
mit ihren Werten:
for attr in dir(obj):
try:
print("obj.{} = {}".format(attr, getattr(obj, attr)))
except AttributeError:
print("obj.{} = ?".format(attr))
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.