Я пытаюсь проверить, есть ли Enum в списке Enums, но он не работает должным образом.
Если я пишу код в одном скрипте и запускаю его, он работает нормально:
>>> from enum import Enum
>>> class X(Enum):
... A = 'a'
... B = 'b'
... C = 'c'
...
>>> s = [X.A, X.B]
>>> x = X.C
>>> y = X.B
>>> x in s
False
>>> y in s
True
Тем не менее, в моем коде тест не работает.Это то, что я добавил для отладки поведения:
print(type(node.action.kind), node.action.kind)
print(type(KINDS), type(KINDS[0]), KINDS)
if node.action.kind in KINDS:
print('FIRST TEST')
elif node.action.kind.value in [i.value for i in KINDS]:
print('SECOND TEST')
else:
print('NOT IN KINDS')
Я бы ожидал, что он напечатает FIRST TEST
, когда условие будет соответствовать, пока код печатает SECOND TEST
:
<enum 'ActionKind'> ActionKind.TALK
<class 'list'> <enum 'ActionKind'> [<ActionKind.CALL: 'api_call'>, <ActionKind.WAIT: 'wait'>, <ActionKind.HANGUP: 'hangup'>]
NOT IN KINDS
<enum 'ActionKind'> ActionKind.WAIT
<class 'list'> <enum 'ActionKind'> [<ActionKind.CALL: 'api_call'>, <ActionKind.WAIT: 'wait'>, <ActionKind.HANGUP: 'hangup'>]
SECOND TEST
IЯ не вижу видимых различий, кроме перечисленных в другом месте, а список KINDS заполняется импортированными константами в другом файле.Что происходит?Почему я не могу проверить членство в списке Enum с оператором in
?