Python - 将枚举集传递给字面量
我有一个关于这个结构的问题:
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想要表达的意思。