перечисление python get по строковому значению не работает

1

У меня есть следующее перечисление

class Ranking(Enum):
    FIRST = 'First',
    SECOND = 'Second',
    THIRD = 'Third'

Когда я пытаюсь Ranking('First') я получаю следующее исключение: ValueError: 'First' is not a valid Ranking

Есть ли эффективный способ получить Ranking.FIRST из строки 'First'?

  • 0
    используя словарь?
  • 1
    Использовать Ranking['First'] ?
Показать ещё 3 комментария
Теги:
python-3.x
enums
python-3.6

1 ответ

3
Лучший ответ

Вы думаете, что C-стиль, где разрывы строк бессмысленны, а члены перечисления нуждаются в запятых между ними. В Python разрывы строк имеют значение, и эти запятые на самом деле создают кортежи:

# How Python sees your code
class Ranking(Enum):
    FIRST = ('First',)
    SECOND = ('Second',)
    THIRD = 'Third'

Удалите запятые.

  • 0
    ой интересная опечатка на новой функции.
  • 0
    Ого, это очень интересно, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню