递归__dict__调用python对象?

时间:2010-12-19 21:11:47

标签: python

是否有一种干净的方法可以在python对象的所有属性上调用 dict ?具体来说,当我在我的对象上调用 dict 时,我得到了这个:

{'edges': [<dawg.Edge instance at 0x107aa0200>,
           <dawg.Edge instance at 0x10a581a70>,
           <dawg.Edge instance at 0x10656a680>]}

但我希望该输出是实例的 dict ()而不是实例描述。

编辑:我想我应该澄清我正在尝试JSON化对象,所以我需要键入(obj ['edges'] [0])作为词典。

2 个答案:

答案 0 :(得分:2)

我认为 repr 解决方案会更干净,但您也可以在获取上述字典后添加此行来获得您想要的内容(我称之为d1

d2 = {'edges' : map(lambda x: x.getDict(), d1['edges'])}

OR与列表理解而不是地图

d2 = {'edges' : [i.getDict() for i in d1['edges']]}

如果你可以为我描述一下你想要什么,我会尝试实现getDict或在lambda中写更多内容,但我不确定你想要什么。它是所有边缘字段的字典吗?

答案 1 :(得分:0)

您可以为对象提供一个名为expanddicts的方法,该方法通过为每个相关事物调用x.__dict__来构建字典。这似乎比尝试使用内置的dict类型和__dict__属性更好。