Перечисление
enum

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

  • enum.Enum,
  • enum.IntEnum,
  • enum.Flag,
  • enum.IntFlag.

Он также определяет один декоратор @unique() и один помощник enum.auto.

enum.unique(): Позволяет указать запрет на создание элементов с одинаковыми значениями. Если не использовать декоратор, то элементы со повторным значением можно использовать, но они не попадет в итерацию.

enum.auto: Класс заменяет экземпляры членов enum.Enum указанными значениями. По умолчанию начальное значение начинается с 1.
enum.Enum
Базовый класс enum.Enum предназначен для создания нумерованных констант или других множеств. Позволяет проводить сравнение элементов перечисления и тождественност
from enum import Enum


class АgeGroups(Enum):
    '''Перечисление содержит информацию
    о возрастных группах'''
    CHILD = (0, 16)
    YOUNG = (17, 20)
    MATURE_AGE_1 = (21, 34)
    MATURE_AGE_2 = (35, 59)
    ELDERLY = (60, 74)
    SENILE = (75,   89)
    SENTENARIANS = (90, 150)


maxim_age = АgeGroups.MATURE_AGE_2 
print(maxim_age.value)
enum.IntEnum
Базовый класс enum.IntEnum предназначен для создания перечисляемых констант, которые также являются подклассами int. Позволяет проводить сравнение элементов: больше, меньше
from enum import IntEnum


class АgeGroups(IntEnum):
    '''Перечисление содержит информацию
    о пределах возрастных групп'''
    CHILD = 16
    YOUNG = 20
    MATURE_AGE_1 = 34
    MATURE_AGE_2 = 59
    ELDERLY = 74
    SENILE = 89
    SENTENARIANS = 150


maxim_age = АgeGroups.MATURE_AGE_2
print(maxim_age.value > АgeGroups.CHILD.value)
print(15 < АgeGroups.CHILD.value)
enum.IntFlag
Базовый класс enum.IntFlag предназначен для создания нумерованных констант, которые можно комбинировать с помощью побитовых операторов (&, |, ^, ~) .
from enum import IntFlag
class Perm(IntFlag):
     R = 4
     W = 2
     X = 1

print( Perm.R | Perm.W )
print( Perm.R + Perm.W )
enum.Flag
Базовый класс enum.Flag предназначен для создания пронумерованных констант, которые можно комбинировать с помощью побитовых операций. В отличие от IntFlag, их нельзя ни комбинировать, ни сравнивать с каким-либо другим Flag перечислением, ни числом .