打印对象的属性,如 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.param1
比z['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 打印一个字典 [重复]的主要内容,如果未能解决你的问题,请参考以下文章