提问人:Diaa Malek 提问时间:10/16/2023 最后编辑:JNevillDiaa Malek 更新时间:10/16/2023 访问量:39
将 DataClass 成员声明存储到变量中
storing dataclass member declarations into variables
问:
我正在调用一个 get_unit API,它返回一个包含有关单元信息的 json。API 支持发送标志。现在,假设可能的标志是 basic、sensors 或 last_update,并且根据标志,它会返回数据。如果需要,我可以提供多个标志 我想将json读入数据类,但我不想为每个标志组合编写数据类。所以我的想法是为每个标志创建一个数据类,并像这个问题中提到的那样做“动态多重继承”。
@dataclass
class SaUnitBasic(DataclassFromDict):
_id: str = field_from_dict(default="")
last_update: Union[dict, list, None] = field_from_dict(default_factory=list)
counters: Union[dict, list, None] = field_from_dict(default_factory=dict)
@dataclass
class SaUnitUpdates(DataclassFromDict):
_id: str = field_from_dict(default="")
counters: Union[dict, list, None] = field_from_dict(default_factory=dict)
@dataclass
class SaUnitSensors(DataclassFromDict):
_id: str = field_from_dict(default="")
sensors: Union[dict, list, None] = field_from_dict(default_factory=list)
正如你所看到的,一些基本字段是按照_id的标志定义的,而有些字段可以存在于不同的标志中,如计数器。
有没有办法将其存储在变量中并像这样重用它,而不是每次都重写成员定义(因为我可能会更改默认行为)?
_id_VAR =(_id: str = field_from_dict(default=""))
counters_VAR = (counters: Union[dict, list, None] = field_from_dict(default_factory=dict))
@dataclass
class SaUnitBasic(DataclassFromDict):
_id_VAR
last_update: Union[dict, list, None] = field_from_dict(default_factory=list)
counters_VAR
@dataclass
class SaUnitUpdates(DataclassFromDict):
_id_VAR
counters_VAR
@dataclass
class SaUnitSensors(DataclassFromDict):
_id_VAR
sensors: Union[dict, list, None] = field_from_dict(default_factory=list)
我尝试像第二个示例一样编写它,但这显然是错误的 python 语法。
答: 暂无答案
评论
_id_Var
counters_VAR