我有一个问题,重新分级嵌套的数据对象。
正如其他文章(Creating nested dataclass objects in Python)中所建议的那样,我们可以使用dacite包创建嵌套的数据对象。这适用于处理我们嵌套的字典结构中的数据。
from dataclasses import dataclass
from dacite import from_dict
@dataclass
class A:
x: str
y: int
@dataclass
class B:
a: A
data = {
'a': {
'x': 'test',
'y': 1,
}
}
result = from_dict(data_class=B, data=data)
assert result == B(a=A(x='test', y=1))但是,我有一个数据类型检查函数和类型转换函数,它与示例中的dataclass A相关联。其中,我使用inspect.signature(A).parameters获取数据集的预期类型,并检查数据是否为预期类型。我们是否也可以将A类的签名称为B类的签名,或者在这方面有任何工作要做?谢谢。
当前类型的检查代码如下所示:
expected_para = inspect.signature(A).parameters
def type_check(d_f: dict, expected_para):
d_new = {}
for k in expected_para.keys():
# get expected type
expected_type = expected_para[k].annotation
# check if k in d_f
if k in d_f.keys():
# check type
v = d_f[k]
#type conversion here
d_new[k] = self.typeconversion(expected_type, v)
else:
d_new[k] = None
return d_new发布于 2022-01-25 18:15:45
您可以使用这样的__post_init__()编写验证函数:
@dataclass
class A:
x: str
y: int
def __post_init__(self) -> None:
assert self.y > 0, 'y must be greater than zero'https://stackoverflow.com/questions/70420525
复制相似问题