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 pprintpprint(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__'}
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.