假設(shè)我創(chuàng)建了一個(gè)@dataclass class Foo,并添加了一個(gè)__post_init__來(lái)執(zhí)行類(lèi)型檢查和處理。當(dāng)我嘗試yaml.load一個(gè)!Foo對(duì)象時(shí),__post_init__不會(huì)被調(diào)用。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)通過(guò)ruamel.yaml加載數(shù)據(jù)類(lèi)時(shí)如何執(zhí)行參數(shù)檢查?在Python 3.7和3.6中,會(huì)發(fā)生此行為pip install dataclasses。
當(dāng)ruamel.yaml從字符串加載@dataclass時(shí),不調(diào)用__post_init__
慕尼黑8549860
2021-05-03 13:15:32