Сообщить об ошибке.

Поддержка перечислений в Python.

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

Обратите внимание.

  • Так как перечисления используются для представления констант, то рекомендуется использовать стиль написания имен для членов перечисления - UPPER_CASE, так же этот стиль будет использоваться в примерах.

Модуль enum определяет четыре класса перечисления, которые можно использовать для определения уникальных наборов имен и значений: enum.Enum, enum.IntEnum, enum.Flag и enum.IntFlag. Он также определяет один декоратор @unique() и один помощник enum.auto.

enum.Enum:

Базовый класс enum.Enum предназначен для создания нумерованных констант. Подробнее смотрите в разделе "Альтернативный синтаксис enum.Enum".

enum.IntEnum:

Базовый класс enum.IntEnum предназначен для создания перечисляемых констант, которые также являются подклассами int.

enum.IntFlag:

Базовый класс enum.IntFlag предназначен для создания нумерованных констант, которые можно комбинировать с помощью побитовых операторов без потери членства в enum.IntFlag. Члены базового класса enum.IntFlag также являются подклассами int.

enum.Flag:

Базовый класс enum.Flag предназначен для создания пронумерованных констант, которые можно комбинировать с помощью побитовых операций без потери их принадлежности к базовому классу enum.Flag.

enum.unique():

Декоратор enum.unique() базового класса enum.Enum, обеспечивает привязку только одного имени к любому значению.

enum.auto:

Класс enum.auto заменяет экземпляры членов enum.Enum соответствующим значением. По умолчанию начальное значение начинается с 1.

Новое в Python 3.6: добавлены enum.Flag, enum.IntFlag, enum.auto

Пример использования модуля enum:

>>> from enum import Enum
>>> class Planet(Enum):
...     MERCURY = (3.303e+23, 2.4397e6)
...     VENUS   = (4.869e+24, 6.0518e6)
...     EARTH   = (5.976e+24, 6.37814e6)
...     MARS    = (6.421e+23, 3.3972e6)
...     JUPITER = (1.9e+27,   7.1492e7)
...     SATURN  = (5.688e+26, 6.0268e7)
...     URANUS  = (8.686e+25, 2.5559e7)
...     NEPTUNE = (1.024e+26, 2.4746e7)
...     def __init__(self, mass, radius):
...         self.mass = mass       # in kilograms
...         self.radius = radius   # in meters
...     @property
...     def surface_gravity(self):
...         # universal gravitational constant  (m3 kg-1 s-2)
...         G = 6.67300E-11
...         return G * self.mass / (self.radius * self.radius)
...
>>> Planet.EARTH.value
(5.976e+24, 6378140.0)
>>> Planet.EARTH.surface_gravity
9.802652743337129