Python中如何将嵌套实例对象快速转换为字典?
解决方案
方案1:使用dataclasses内置方法(无额外依赖,类定义可调整时首选)
给自定义类添加@dataclass装饰器,直接调用内置的asdict方法即可自动递归转换所有嵌套自定义类为字典,转换逻辑仅需1行:
from dataclasses import dataclass, asdict # 仅需给原有类加装饰器,无需修改初始化逻辑 @dataclass class Object: def __init__(self, string): self.string = string @dataclass class example: def __init__(self): self.obj = Object('hello') # 转换代码仅1行 result = asdict(example())
输出结果完全匹配需求:
{'obj': {'string': 'hello'}}
方案2:不修改原有类定义,1行递归实现通用转换
如果不能改动原有类代码,直接定义递归转换函数即可,支持任意层级的嵌套类、嵌套列表/字典场景:
# 1行定义通用转换逻辑 to_dict = lambda o: o.__dict__ if hasattr(o, '__dict__') else o if type(o) not in (list, dict) else {k: to_dict(v) for k,v in o.items()} if isinstance(o, dict) else [to_dict(i) for i in o] # 转换代码仅1行 result = to_dict(example())
内容的提问来源于stack exchange,提问作者sr0812
相关产品推荐
相关产品推荐

