Python 3.6+enumфункция
enum.auto()
auto
Автоматически назначает значения элементам перечисления (по умолчанию — последовательные числа).
Синтаксис
from enum import auto
class X(Enum):
A = auto()
Нумерация начинается с 1, а не с 0 — частая причина расхождения с внешним протоколом, где коды идут с нуля. Если смешивать явные значения и auto(), очередное auto() продолжит счёт от последнего числового значения, а во Flag вместо +1 подставляются степени двойки. Правило простое: auto() уместен, когда сами значения никого не волнуют и важны только имена; как только значение уходит в файл, БД или по сети — задавайте его руками.
Примеры
from enum import Enum, auto
class Dir(Enum):
NORTH = auto()
SOUTH = auto()
EAST = auto()
WEST = auto()
Dir.NORTH.value # → 1
Dir.SOUTH.value # → 2
list(Dir) # → [<Dir.NORTH:1>, <Dir.SOUTH:2>, ...]
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности