无法将加星号的表达式与 Literal 一起使用

问题描述 投票:0回答:1

我正在开发一个项目,并尝试解压一个列表,以便我可以将其作为 Pydantic 库的文字。但代码抛出了这个错误,

Python version 3.10 does not support starred expressions in subscriptions

这是导致错误的代码,

from pydantic import BaseModel
from typing import Literal

members = ["Member1", "Member2"]
options = ["FINISH"] + members

class routeResponse(BaseModel):
    next: Literal[*options] # <- this line is throwing error

如果我删除文字,代码就可以正常工作,即

[*options]
工作得很好。所以,一起使用
*
Literal
的问题。有谁知道可能导致错误的原因是什么?

我目前使用的是python版本3.10.9。

python python-3.x python-typing literals
1个回答
0
投票

好吧,经过几次尝试并检查不同的选项后,我得到了正确的答案。

感谢 @kuza 提到 Literal 接受类型或文字的元组here

阅读此回复后,我尝试了

Literal[(*options,)]
,现在它按预期工作。这是完整的代码,以防万一需要。

from pydantic import BaseModel
from typing import Literal

members = ["Member1", "Member2"]
options = ["FINISH"] + members

class routeResponse(BaseModel):
    next: Literal[(*options,)]
© www.soinside.com 2019 - 2024. All rights reserved.