打印对象的属性,如 json.dumps 打印一个字典 [重复]

Posted

技术标签:

【中文标题】打印对象的属性,如 json.dumps 打印一个字典 [重复]【英文标题】:Print an object's attributes like json.dumps prints a dict [duplicate] 【发布时间】:2016-03-14 16:53:31 【问题描述】:

编辑:这个答案中有一个解决方案:How to use a dot “.” to access members of dictionary?

使用字典时:

d = dict()
d['param1'] = 17
d['param2'] = 3

使用print json.dumps(d) 可以轻松打印。使用对象/类时:

class z: 
    pass
z.param1 = 17
z.param2 = 3

我无法打印 z 的所有属性,print json.dumps(z)print z 都没有。怎么做?


旁注但很重要:为什么我要使用类/对象来存储参数,而使用 dict 是合乎逻辑的?因为z.param1z['param1']写起来更短更方便,尤其是我的(法语)关键字[]'写得很长,因为ALT+GR+5(比如说2秒而不是 0.5,但是当你有一个包含许多变量的长代码时,这真的很重要)

【问题讨论】:

***.com/questions/192109/… @Anil 或其他:是否有一个简短的技巧(通过子类化dict)来访问带有d.param1 而不是d['param1'] 的字典? 这是您要找的吗? ***.com/a/23689767/2652580 【参考方案1】:

您可以简单地在类实例上使用__dict__ 来获取dict 对象形式的属性:

>>> z.__dict__
>>> 'param1': 17, '__module__': '__main__', 'param2': 3, '__doc__': None

但是,如果您需要删除 __xxx__ 内置方法,那么您可能需要在类中指定 __str__ 方法。

【讨论】:

你能举一个例子来说明你对__str__的看法吗? 你的预期输出是什么? 这个输出,@ZdaR:'param1': 17, 'param2': 3

以上是关于打印对象的属性,如 json.dumps 打印一个字典 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python中json.dump()和json.dumps()的区别

python json格式化打印

python对打印出中文乱码问题的解决方案

漂亮的打印json,但将内部数组保留在一行python

python json库序列化支持中文

PyTricks-json dumps优雅的输出字典