为了账号安全,请及时绑定邮箱和手机立即绑定

当ruamel.yaml从字符串加载@dataclass时,不调用__post_init__

当ruamel.yaml从字符串加载@dataclass时,不调用__post_init__

慕尼黑8549860 2021-05-03 13:15:32
假设我创建了一个@dataclass class Foo,并添加了一个__post_init__来执行类型检查和处理。当我尝试yaml.load一个!Foo对象时,__post_init__不会被调用。from dataclasses import dataclass, fieldsfrom ruamel.yaml import yaml_object, YAMLyaml = YAML()@yaml_object(yaml)@dataclassclass Foo:    foo: int    bar: int    def __post_init__(self):        raise Exception        for field in fields(self):            value = getattr(self, field.name)            typ = field.type            if not isinstance(value, typ):                raise Exceptions = '''\!Foofoo: "foo"bar: "bar"'''yaml.load(s)通过ruamel.yaml加载数据类时如何执行参数检查?在Python 3.7和3.6中,会发生此行为pip install dataclasses。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号