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

Создание перечислений enum.Enum в Python

Перечисления enum.Enum создаются с использованием синтаксиса класса, что упрощает их чтение и запись. Альтернативный метод создания описан в функциональном API enum.Enum.

Чтобы определить перечисление, создайте подкласс enum.Enum следующим образом:

>>> from enum import Enum
>>> class Color(Enum):
...     RED = 1
...     GREEN = 2
...     BLUE = 3

Примечание. Значения членов перечисления могут быть любыми: int, str и т. д. Если точное значение не имеет значения, то можно использовать экземпляры enum.auto, и будет выбрано подходящее значение. Будьте осторожны, при смешивании enum.auto с другими значениями.

Примечание: терминология.

  • Класс Color - это перечисление (или enum)
  • Атрибуты Color.RED, Color.GREEN и т. д. являются членами перечисления (или членами enum) и являются функциональными константами.
  • Члены перечисления имеют имена и значения (имя Color.RED - RED, значение Color.BLUE - 3 и т. Д.)

Примечание. Несмотря на то, что используется синтаксис класса для создания перечислений, сами перечисления не являются обычными классами Python. Подробнее смотрите в разделе "Чем отличаются перечисления? Больше подробностей".

Члены перечисления Enum имеют удобочитаемые строковые представления:

>>> print(Color.RED)
# Color.RED

...в то время как их repr() имеет больше информации:

>>> print(repr(Color.RED))
# <Color.RED: 1>

Тип type элемента перечисления - это перечисление, к которому он принадлежит:

>>> type(Color.RED)
# <enum 'Color'>
>>> isinstance(Color.GREEN, Color)
# True

Члены Enum также имеют свойство, которое содержит только их имя элемента:

>>> print(Color.RED.name)
# RED

Перечисления поддерживают итерацию в порядке определения:

>>> class Shake(Enum):
...     VANILLA = 7
...     CHOCOLATE = 4
...     COOKIES = 9
...     MINT = 3
...
>>> for shake in Shake:
...     print(shake)
...
# Shake.VANILLA
# Shake.CHOCOLATE
# Shake.COOKIES
# Shake.MINT

Члены перечисления enum.Enum хешируются, поэтому их можно использовать в словарях и множествах:

>>> apples = {}
>>> apples[Color.RED] = 'red delicious'
>>> apples[Color.GREEN] = 'granny smith'
>>> apples == {Color.RED: 'red delicious', Color.GREEN: 'granny smith'}
# True