将对象属性转换为dict

时间:2019-05-29 19:25:14

标签: python

class foo:
    def __init__(self,name):
        self.name = name
        #other attributes
        self.children = [] #Child objects in self.children

    def convert(self):
        return vars(self)

使用vars(foo)foo.__dict__时,self.children中的对象也不会转换为字典,而是返回如下字典:

{'name': 'name', 'children': [object1,object2...]}

这些“子”对象也是foo类的实例。 最初,我尝试使用dict['children'] = [vars(item) for item in dict['children']]来转换这些对象,但是不幸的是,这不适用于儿童的孩子。 我可以创建一个递归函数来转换所有这些对象及其子对象吗?

1 个答案:

答案 0 :(得分:1)

使用递归函数执行。获取对象的变量,然后将子列表替换为转换后的子列表。

def convert(self):
    d = dict(vars(self)) # Copy the vars() dictionary
    d['children'] = [c.convert() for c in self.children]
    return d