Hallo Leute,
gibt es irgendwie einen Hack oder einen Trick, wie ich alle definierten Variablen in einer Klasse ausgeben kann? Sind die vielleicht in einem Dictionary oder so gespeichert? Also mich würden alle self.varname interessieren...
Hintergrund ist, das ich zum debuggen gerne alle Variablen ausgeben würde und nicht jedes mal, wenn ich an der Klasse etwas ändere auch meine debugmethode anpassen muss...
Vielleicht hat da jemand eine Idee...
Alle Variablen einer Klasse ausgeben
Gut vermutet.würmchen hat geschrieben:Hallo Leute,
gibt es irgendwie einen Hack oder einen Trick, wie ich alle definierten Variablen in einer Klasse ausgeben kann? Sind die vielleicht in einem Dictionary oder so gespeichert?
__dict__ ist dein Freund.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Wobei man damit anscheinend keine Klassenattribute bekommt, wenn man sich auf das Objekt beschränkt.
Man müßte dann also sowohl das Dict der Klasse als auch des Objektes abfragen und mit __getattribute__ den jeweiligen Wert holen (ggf. könnte man anhand der "__" die eigenen Klassenattribute herausfiltern).
Ich bin mir aber sicher, dass es dazu hier schon nen Thread gab
Code: Alles auswählen
In [1]: class Foo(object):
...: bar = "test"
...: def __init__(self):
...: self.foo = 42
In [26]: f.__dict__
Out[26]: {'foo': 42}
In [32]: Foo.__dict__.keys()
Out[32]: ['__module__', 'bar', '__dict__', '__weakref__', '__doc__', '__init__']
In [27]: f.__getattribute__("foo")
Out[27]: 42
In [28]: f.__getattribute__("bar")
Out[28]: 'test'
Ich bin mir aber sicher, dass es dazu hier schon nen Thread gab
Code: Alles auswählen
In [1]: class C(object):
...: var = None
...: def __init__(self):
...: self.x = 42
...:
...:
In [2]: dir(C())
Out[2]:
['__class__',
'__delattr__',
'__dict__',
'__doc__',
'__format__',
'__getattribute__',
'__hash__',
'__init__',
'__module__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__weakref__',
'var',
'x']
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]