¿Existe una función incorporada para imprimir todas las propiedades y valores actuales de un objeto?
Entonces, lo que estoy buscando aquí es algo así como la función print_r de PHP .
Esto es para poder depurar mis scripts viendo cuál es el estado del objeto en cuestión.
Quieres vars()
mezclar con pprint()
:
from pprint import pprint
pprint(vars(your_object))
Realmente estás mezclando dos cosas diferentes.
Utilice dir()
o vars()
el inspect
módulo para obtener lo que le interesa (lo uso __builtins__
como ejemplo; puede utilizar cualquier objeto en su lugar).
>>> l = dir(__builtins__)
>>> d = __builtins__.__dict__
Imprime ese diccionario como quieras:
>>> print l
['ArithmeticError', 'AssertionError', 'AttributeError',...
o
>>> 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',
...
La impresión bonita también está disponible en el depurador interactivo como comando:
(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)))
Existen muchas funciones de terceros que agregan cosas como manejo de excepciones, impresión de caracteres nacionales/especiales, recursividad en objetos anidados, etc., según las preferencias de sus autores. Pero básicamente todos se reducen a esto.