python – Is there a built-in function to print all the current properties and values of an object?
python – Is there a built-in function to print all the current properties and values of an object?
You want vars()
mixed with pprint()
:
from pprint import pprint
pprint(vars(your_object))
You are really mixing together two different things.
Use dir()
, vars()
or the inspect
module to get what you are interested in (I use __builtins__
as an example; you can use any object instead).
>>> l = dir(__builtins__)
>>> d = __builtins__.__dict__
Print that dictionary however fancy you like:
>>> print l
[ArithmeticError, AssertionError, AttributeError,...
or
>>> from pprint import pprint
>>> pprint(l)
[ArithmeticError,
AssertionError,
AttributeError,
BaseException,
DeprecationWarning,
...
>>> pprint(d, indent=2)
{ ArithmeticError: <type exceptions.ArithmeticError>,
AssertionError: <type exceptions.AssertionError>,
AttributeError: <type exceptions.AttributeError>,
...
_: [ ArithmeticError,
AssertionError,
AttributeError,
BaseException,
DeprecationWarning,
...
Pretty printing is also available in the interactive debugger as a command:
(Pdb) pp vars()
{__builtins__: {ArithmeticError: <type exceptions.ArithmeticError>,
AssertionError: <type exceptions.AssertionError>,
AttributeError: <type exceptions.AttributeError>,
BaseException: <type exceptions.BaseException>,
BufferError: <type exceptions.BufferError>,
...
zip: <built-in function zip>},
__file__: pass.py,
__name__: __main__}
python – Is there a built-in function to print all the current properties and values of an object?
def dump(obj):
for attr in dir(obj):
print(obj.%s = %r % (attr, getattr(obj, attr)))
There are many 3rd-party functions out there that add things like exception handling, national/special character printing, recursing into nested objects etc. according to their authors preferences. But they all basically boil down to this.