Строковое перечисление в PythonPython

Программы на Python
Anonymous
Строковое перечисление в Python

Сообщение Anonymous »

Чтобы инкапсулировать список состояний, я использую модуль 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)?

Подробнее здесь: https://stackoverflow.com/questions/586 ... -in-python

Вернуться в «Python»