【发布时间】:2020-08-30 09:08:36
【问题描述】:
我正在寻找一些关于在 Python 中实现一组仅数据值“接口”的最佳方法的建议,这些接口相当于它们的打字稿对应物(我们有一个项目,我们同时使用这两种接口,并希望为他们的通信强制执行一致的接口,这将通过将 python 序列化为 json 以拉入 TS 组件)
接口将是组合,以保持模块化和简单。
给定一组 TS 接口定义为:
interface TestOutput {
phantom: string
testDateTime: datetime
author: string
result: boolean
report_summaryFile?: string // the '?' means this field is optional
// ... more values
series: Array<Series>
soloImages: Array<Images>
}
interface Series {
number: number
filter: string
kernel: string
// ... more values
images: Array<TestImage>
}
我正在考虑使用 dataclasses 并执行以下操作:
from dataclasses import dataclass
from typing import List
import datetime
@dataclass
class TestSeries:
seriesNum: int
modality: str
description: str = ''
@dataclass
class TestOutput:
phantom: str
testDateTime: datetime.datetime
author: str
result: bool
series: List[TestSeries]
soloImages: List[Images]
report_summaryFile: str = ''
数据类是最好的方法吗?
【问题讨论】:
-
听起来很合理。您可以将任何数据类实例插入
json.dumps(dataclass.as_dict(my_instance))以从中获取有效的 json 字符串,如果您在运行时需要实际类型断言而不是类型注释,则可以转换为使用pydantic。 -
@Arne - 太好了 - 谢谢你的想法。我会检查 pydantic
-
当然,但请注意,
dataclasses.dataclass只是一种使用更少样板创建常规类的方法
标签: python-3.x python-dataclasses python-class