Можно ли определить перечисления без значений с помощью Python? - PullRequest
3 голосов
/ 20 октября 2019

Одним из преимуществ перечислений в Java и других языках является то, что мне не нужно заботиться о конкретных значениях (в отличие от констант / статических конечных членов). Например, в Java я могу сделать следующее:

public enum Color {
    RED, BLUE;
}

По крайней мере, насколько мне известно, в Python я должен сделать следующее:

class Color(Enum) {
    RED = "red" # or e.g 1
    BLUE = "blue" # or e.g. 2
}

Если у меня есть перечисление ссотни имен, тогда это может стать довольно громоздким, потому что я всегда должен отслеживать, было ли значение уже присвоено имени или нет. Возможно ли достичь того же результата, что и в Java, не прибегая к генераторам или тому подобному?

Ответы [ 2 ]

3 голосов
/ 20 октября 2019

Одним из способов является использование базового класса Enum в качестве вызываемого :

Color = Enum('Color', 'RED BLUE GREEN ORANGE')
2 голосов
/ 20 октября 2019

Если вы используете Python 3.6 или более позднюю версию, вы можете использовать enum.auto():

from enum import Enum, auto

class Color(Enum):
    RED = auto()
    BLUE = auto()

Документация для библиотеки enum описывает эту и другие полезные функции, такие как@unique декоратор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...