我有两个数据类:Msg和Field。Msg 有一个fields类型字段list[Field]。我想在它们全部初始化后为每个字段分配一些内容,Field这或多或少是它们在列表中的相对索引fields。
但是,当我__post_init__(self)向Msg数据类添加方法时,fields列表为空,因此我无法更新索引。
from dataclasses import dataclass
from ruamel.yaml import YAML
@dataclass
class Msg:
id: int
desc: str
fields: list[Field]
def __post_init__(self) -> None:
idx: int = 0
for field in self.fields: # why is this empty??
field.index = idx
idx += field.size
@dataclass
class Field:
id: int
name: str
units: str
size: int
index: int = -1
y = YAML()
y.register_class(Msg) …Run Code Online (Sandbox Code Playgroud)