这里我要找的是PHP的print_r函数。
这样我就可以通过查看有问题的对象的状态来调试脚本。
这里我要找的是PHP的print_r函数。
这样我就可以通过查看有问题的对象的状态来调试脚本。
当前回答
如果你用它来调试,你只是想递归转储所有的东西,接受的答案是不令人满意的,因为它要求你的类已经有良好的__str__实现。如果不是这样的话,这样做会更好:
import json
print(json.dumps(YOUR_OBJECT,
default=lambda obj: vars(obj),
indent=1))
其他回答
我喜欢使用python对象内置类型、键或值。
对于属性,不管它们是方法还是变量:
o.keys()
对于这些属性的值:
o.values()
无论你的变量在类中是如何定义的,在__init__内部还是外部,这都是有效的。
your_obj = YourObj()
attrs_with_value = {attr: getattr(your_obj, attr) for attr in dir(your_obj)}
虽然有很多好的答案,这里有一个一行程序,可以给出属性和值:
(str(vars(config)).split(",")[1:])
其中'config'是有问题的对象。我列出这作为一个单独的答案,因为我只是想简单地打印对象的相关值(包括__main等),而不使用循环或漂亮的打印,没有找到一个方便的答案。
from pprint import pprint
def print_r(the_object):
print ("CLASS: ", the_object.__class__.__name__, " (BASE CLASS: ", the_object.__class__.__bases__,")")
pprint(vars(the_object))
如果你用它来调试,你只是想递归转储所有的东西,接受的答案是不令人满意的,因为它要求你的类已经有良好的__str__实现。如果不是这样的话,这样做会更好:
import json
print(json.dumps(YOUR_OBJECT,
default=lambda obj: vars(obj),
indent=1))