如何使用键入强制使用特定枚举作为 python 中的参数

How do I use typing to force using a specific enum as an argument in python

我正在尝试编写一个函数,它只会排除一个特定的枚举,每个值都是一个字符串,因此该函数不能排除一个字符串,但会从枚举中获得想要的值

from enum import Enum

class Options(Enum):
    A = "a"
    B = "b"
    C = "c"

def some_func(option: Options):
    # some code
    return option

我遇到的问题是,如果我检查类型,我会得到这个而不是字符串:

>>> type(Options.A)
<enum 'Options'>

我想要return这个:

>>> type(Options.A)
<class 'str'>

知道如何实现它以使其按我预期的方式工作吗?提前致谢

您可以转换枚举属性的值:

from enum import Enum

class Options(Enum):
    A = "a"
    B = "b"
    C = "c"


str_enum = str(Options.A)
print(type(str_enum))
>>> type(Options.A)

总是去 return

<enum 'Options'>

因为 Options.A<enum 'Options'> 成员。但是,如果你想

>>> isinstance(Options.A, str)

成为

True

然后你需要在 str 类型中混合:

class Options(str, Enum):
    A = "a"
    B = "b"
    C = "c"

NB 如果混合使用 str 类型,那么您的 Enum 成员将直接与 str 进行比较:

>>> Options.A == 'a'
True