Is there a built-in function to print all the current properties and values of an object? Is there a built-in function to print all the current properties and values of an object? python 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 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.