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.

Leave a Reply

Your email address will not be published. Required fields are marked *