Python - 将枚举设置为 Literal

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

我对这个结构有疑问:

class Fruit(Enum):
    Apple = "apple"
    Bannana = "bananna"
    Watermelon = "watermelon"

top_fruits = {
    Fruit.Watermelon,
    Fruit.Bannana
}

top_fruits_literal = Literal[*top_fruits]

VSCode 将

*top_fruits
突出显示为
"Unpacked arguments cannot be used in type argument lists"
, 但代码运行得很好。

我错过了什么,像这样创建文字是不是一个坏主意?有什么需要改变才能以“正确的方式”进行吗?

查看了 python Literals 和 Enums 但没有找到答案..

python visual-studio-code enums literals
2个回答
0
投票

它之所以有效,是因为 Python 解释器可以很好地运行该代码。但 Python 解释器不进行类型检查。

但是,类型检查器不是 Python 解释器,并且它们不够智能,无法运行它 - 这就是 VSCode 所说的。


0
投票

实际上您不需要为列表提供*,

top_frutis_literal = 文字[top_fruits]

这已经足够好了,这就是您在 Visual Studio 中收到该错误的原因。虽然python没有报错

© www.soinside.com 2019 - 2024. All rights reserved.