Python - 将枚举集传递给字面量

2 投票
2 回答
79 浏览
提问于 2025-04-14 17:28

我有一个关于这个结构的问题:

from enum import Enum
from typing import Literal

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

top_fruits = {
    Fruit.Watermelon,
    Fruit.Bannana
}

top_fruits_literal = Literal[*top_fruits]

VSCode(一个代码编辑器)把 *top_fruits 标记为 "解包的参数不能在类型参数列表中使用",但是这段代码运行得很好。

我是不是漏掉了什么?这样创建字面量(Literal)是不是不太好?有没有什么可以改进的地方,让它做到“正确的方式”?

2 个回答

-4

其实你不需要在列表前面加上*

top_frutis_literal = Literal[top_fruits]

这样就足够了,这也是你在Visual Studio里看到那个错误的原因。虽然在Python里并没有错误。

0

之所以能运行,是因为Python解释器可以顺利执行这段代码。不过,Python解释器并不会进行类型检查。

但是,类型检查工具并不是Python解释器,它们没有那么聪明,无法执行代码——这就是VSCode想要表达的意思。

撰写回答