如何使用键入强制使用特定枚举作为 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
我正在尝试编写一个函数,它只会排除一个特定的枚举,每个值都是一个字符串,因此该函数不能排除一个字符串,但会从枚举中获得想要的值
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