如何在Python中提示输入字符串枚举

问题描述

我很好奇如何键入一个字符串枚举,例如: [“ keyword1”,“ keyword2”]

我希望一些变量v等于任何这些字符串文字。我可以用文字的并集来实现这一点-Union [Literal [“ keyword1”],Literal [“ keyword2”]],但是如果将来更改其中一个关键字,将使维护变得困难。 理想情况下,我想定义如下内容:

class Keywords(enum):
   keywordOne = "keyword1"
   keywordTwo = "keyword2"
v: valueOf[Keywords] = Keywords.keywordOne.value # v = "keyword1"

但是我不确定如何在MyPy中完成类似的事情

解决方法

您快到了。似乎您正在寻找的是一个自定义枚举对象,该对象本身已键入,然后键入指示该枚举用法的注释。像这样:

from enum import Enum
from typing import Literal

class CustomKeyword(Enum):
   keywordOne: Literal["keyword1"] = "keyword1"
   keywordTwo: Literal["keyword2"] = "keyword2"

v: CustomKeyword = CustomKeyword.keywordOne

这不会给您预期的结果吗?

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...