是否有一种内置函数可以打印对象的所有当前属性和值?

29 浏览
0 Comments

是否有一种内置函数可以打印对象的所有当前属性和值?

因此,我在这里寻找类似于PHP的print_r函数。

这样我就可以通过查看对象的状态来调试我的脚本。

admin 更改状态以发布 2023年5月24日
0
0 Comments

你真的把两件事情混在一起了。

使用dir()vars()inspect模块来获取你感兴趣的内容(我以__builtins__为例;你可以使用任何对象代替)。

>>> l = dir(__builtins__)
>>> d = __builtins__.__dict__

无论你如何花哨地打印该字典都可以:

>>> print l
['ArithmeticError', 'AssertionError', 'AttributeError',...

或者

>>> from pprint import pprint
>>> pprint(l)
['ArithmeticError',
 'AssertionError',
 'AttributeError',
 'BaseException',
 'DeprecationWarning',
...
>>> pprint(d, indent=2)
{ 'ArithmeticError': ,
  'AssertionError': ,
  'AttributeError': ,
...
  '_': [ 'ArithmeticError',
         'AssertionError',
         'AttributeError',
         'BaseException',
         'DeprecationWarning',
...

在交互式调试器中还可以使用一个命令进行漂亮的打印:

(Pdb) pp vars()
{'__builtins__': {'ArithmeticError': ,
                  'AssertionError': ,
                  'AttributeError': ,
                  'BaseException': ,
                  'BufferError': ,
                  ...
                  'zip': },
 '__file__': 'pass.py',
 '__name__': '__main__'}

0
0 Comments

\n\n你想要用vars()pprint()混合在一起:\n

from pprint import pprint
pprint(vars(your_object))

0