我有一个嵌套的类:

# hello.py
import pydantic as dan

class Hello:
    @dan.dataclasses.dataclass
    class Data:
        data_a: int

import yaml
data = Hello.Data(1)
filename = "hi.yaml"

with open(filename, "w") as fh:
    yaml.dump(data, fh)

with open(filename, "r") as fh:
    yaml.load(fh, yaml.Loader) # Causes the error

看起来转储程序没有识别出Data是在Hello中定义的,并将类保存为python/object:hello.Data.我原以为是python/object:hello.Hello.Data分.

是否有解决此问题的方法?

我有一个嵌套的类,因为我有多个类,每个类都需要专用的dataclass.

我找到了this个图书馆. for each 班级添加装饰师对我来说将是一件痛苦的事.不过,我现在就试一试.

推荐答案

使用‘ruamel.yaml’而不是‘pyyaml’.‘pyyaml’在处理嵌套对象方面有一些限制.

-PIP安装:

pip install ruamel.yaml

代码

# hello.py
import pydantic as dan

class Hello:
    @dan.dataclasses.dataclass
    class Data:
        data_a: int

from ruamel import yaml

data = Hello.Data(1)
filename = "hi.yaml"

with open(filename, "w") as fh:
    yaml.dump(data, fh)

with open(filename, "r") as fh:
    yaml.load(fh, yaml.Loader)  # Causes the error

Python相关问答推荐

过载功能是否包含Support Int而不是Support Int?

Python panda拆分列保持连续多行

根据网格和相机参数渲染深度

使用mySQL的SQlalchemy过滤重叠时间段

如何将双框框列中的成对变成两个新列

_repr_html_实现自定义__getattr_时未显示

输出中带有南的亚麻神经网络

聚合具有重复元素的Python字典列表,并添加具有重复元素数量的新键

如何过滤包含2个指定子字符串的收件箱列名?

如何从.cgi网站刮一张表到rame?

Pandas:将多级列名改为一级

Pre—Commit MyPy无法禁用非错误消息

如何在Polars中从列表中的所有 struct 中 Select 字段?

给定高度约束的旋转角解析求解

joblib:无法从父目录的另一个子文件夹加载转储模型

在Python中调用变量(特别是Tkinter)

Python Pandas—时间序列—时间戳缺失时间精确在00:00

如何找出Pandas 图中的连续空值(NaN)?

如何在一组行中找到循环?

为什么我的scipy.optimize.minimize(method=";newton-cg";)函数停留在局部最大值上?