python - 我可以在 Python 中的 Union 上拥有可变数量的类型吗?
问题描述
我有这样的结构:
from enum import Enum
class MainEnum(str, Enum):
A = "AA"
B = "BB"
...
class ChildAEnum(str, Enum):
C = "CC"
D = "DD"
class ChildBEnum(str, Enum):
E = "EE"
F = "FF"
...
child_mapping = {
MainEnum.A: ChildAEnum
MainEnum.B: ChildBEnum
...
}
其中每个Enum
都有MainEnum
另一个Enum
与之关联并由child_mapping
地图指示。
我想要一个Union
类型提示,它可以是来自child_mapping
. 我不知道它是否相关,但我正在使用pydantic
并且我希望它用于自动验证该字段。
手动,它将是:
class Something(BaseModel):
some_child: Union[ChildAEnum, ChildBEnum]
但我希望能够添加另一个键值对child_mapping
并让它被Union
.
我尝试了以下方法:
class Something(BaseModel):
some_child: Union[*list(child_mapping.values())]
list(child_mapping.values())
成功地为我提供了我想要使用的类型的列表,但解包似乎不起作用
我什至能够做到这一点?
解决方案
写下这个问题帮助我思考这个问题。解决方案是将其转换child_mapping.values()
为 a ,而不是将其list
转换为 a tuple
。
所以解决方案是:
class Something(BaseModel):
some_child: Union[tuple(child_mapping.values())]
推荐阅读
- ionic-framework - 将 Stripe 3D 安全支付与 Ionic4 集成
- point-cloud-library - 使用 PDAL 获取 LAS/LAZ 文件中的索引方法
- javascript - 在 2 个 CSS 工作表之间切换
- python - 如何在“demo.snmplabs.com”服务器上找到正在运行的进程?
- netlogo - 我必须多次运行模型
- sql - 显示 SQL 跟踪(Springboot+Mybatis)
- jquery - 当子 Div 的显示为无时如何隐藏父 Div
- flutter - Flutter - TextFormField 上的 Time.now()
- python-2.7 - 在 GoogleAppEngine oauth flow 中如何获取 Web App 凭据
- nativescript - 如何在 NativeScript 中设置资产的正确路径?