我是python的新手。我正在尝试检查字符串是否具有在 Enum 中定义的任何匹配值。例如,我想在下面的代码中打印“找到”
我添加了以下隐式方法的定义以支持比较、散列和获取方法
from enum import Enum
class States(Enum):
COMPLETED_STATE = 'completed'
DEPENDENCY_WAIT_STATE = 'dependency_wait'
FAILED_NO_RERUN_STATE = 'failed_no_rerun'
IGNORED_STATE = 'ignored'
RUNNING_STATE = 'running'
NEVER_RUN_STATE = 'never_run'
ON_HOLD_STATE = 'on_hold'
def __hash__(self):
return hash(self.value)
def __str__(self):
return self.value
def __eq__(self, other):
if type(self) == type(other):
return self.value == other.value
return self.value == other
def __get__(self, *args, **kwargs):
return self.value
Map = {
States.ON_HOLD_STATE: [States.NEVER_RUN_STATE],
States.DISABLED_STATE: [States.NEVER_RUN_STATE],
States.RUNNING_STATE: [States.DEPENDENCY_WAIT_STATE,
States.ON_HOLD_STATE,
States.NEVER_RUN_STATE],
States.IGNORED_STATE: [States.RUNNING_STATE,
States.NEVER_RUN_STATE]
}
print(Map[States.RUNNING_STATE]) // ['dependency_wait', 'on_hold', 'never_run']
print(Map['running']) // ['dependency_wait', 'on_hold', 'never_run']
print(States.RUNNING_STATE == 'dependency_wait') // False
print(States.RUNNING_STATE == 'running') // True
print(States.RUNNING_STATE == States.RUNNING_STATE) // True
if 'running' in States:
print "Found" // Does not gets printed
if States.RUNNING_STATE in States:
print "Found here" // Does not gets printed
潇潇雨雨
相关分类