Python的dataclass中是否支持对变量进行分组管理?
解决方案
你可以通过嵌套dataclass的方式实现分组效果,将每个子分组单独定义为独立的dataclass,主dataclass直接引用子分组实例即可,具体实现如下:
标准库dataclass实现代码
from dataclasses import dataclass # 定义子分组结构,三个分组字段结构一致可复用 @dataclass class Group: data1: str data2: str @dataclass class MyData: grp1: Group grp2: Group grp3: Group @classmethod def from_dict(cls, data: dict) -> "MyData": main_group = data["Main group"] return cls( grp1=Group(**main_group["Group 1"]), grp2=Group(**main_group["Group 2"]), grp3=Group(**main_group["Group 3"]) )
使用示例
# 假设http请求返回的字典为resp_data my_data = MyData.from_dict(resp_data) # 直接通过层级访问字段 print(my_data.grp1.data1) print(my_data.grp2.data2)
如果不同分组的字段结构存在差异,只需要单独定义对应结构的子dataclass替换即可,无需修改主类的使用逻辑。如果需要省略手动写from_dict的步骤,也可以引入第三方库自动完成嵌套字典到嵌套dataclass的转换。
内容的提问来源于stack exchange,提问作者Carl
相关产品推荐
相关产品推荐

