【发布时间】:2020-02-24 17:57:29
【问题描述】:
要封装我正在使用enum 模块的状态列表:
from enum import Enum
class MyEnum(Enum):
state1='state1'
state2 = 'state2'
state = MyEnum.state1
MyEnum['state1'] == state # here it works
'state1' == state # here it does not throw but returns False (fail!)
但是,问题是我需要在脚本的许多上下文中无缝地将值用作字符串,例如:
select_query1 = select(...).where(Process.status == str(MyEnum.state1)) # works but ugly
select_query2 = select(...).where(Process.status == MyEnum.state1) # throws exeption
如何避免调用额外的类型转换(上面的str(state))或底层值(state.value)?
【问题讨论】:
-
MyEnum.state1.value? -
对不起,这对我来说和
str(state)一样丑... -
Testround.status是什么类型?你能把它改成MyEnum吗? -
您的示例代码
'state1' == state是错误的——比较返回False。 -
@EthanFurman:它没有抛出,但确实结果远非令人满意。谢谢!更正。
标签: python python-3.x string enums