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']]
来转换这些对象,但是不幸的是,这不适用于儿童的孩子。
我可以创建一个递归函数来转换所有这些对象及其子对象吗?
答案 0 :(得分:1)
使用递归函数执行。获取对象的变量,然后将子列表替换为转换后的子列表。
def convert(self):
d = dict(vars(self)) # Copy the vars() dictionary
d['children'] = [c.convert() for c in self.children]
return d