我可以在Python中的Union上使用不同数量的类型吗?

2024-06-28 11:23:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的结构:

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
    ...
}

其中MainEnum上的每个Enum都有另一个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())成功地为我获取了想要使用的类型列表,但解包似乎不起作用

我能做到吗


Tags: child类型someenummappingsomethinglistclass
1条回答
网友
1楼 · 发布于 2024-06-28 11:23:48

写下这个问题帮助我思考它。解决方案是,将child_mapping.values()转换为list,而不是将其转换为tuple

因此,解决方案是:

class Something(BaseModel):
    some_child: Union[tuple(child_mapping.values())]

相关问题 更多 >