小编Fib*_*bra的帖子

使用 ruamel.yaml 调用 __post_init__() 时未初始化字段

我有两个数据类:MsgField。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)

python yaml ruamel.yaml

5
推荐指数
1
解决办法
153
查看次数

标签 统计

python ×1

ruamel.yaml ×1

yaml ×1