Перечисления в Python

Перечисления в Python

Часто, при создании некой программы в Python требуется указать и некий список константных значений, для дальнейшего использования, будь-то: календарь, список планет, имен и так далее. Для подобных случаев в языке предусмотрен модуль Enum/перечисление.

В данной статье мы рассмотрим функцию перечисления Enum в Python, мощный инструмент для обработки наборов данных, которые не меняются.

Что же такое перечисление в Python?

Давайте обсудим, что представляет Enum в Python. Если коротко, то Enum — перечисление , эта языковая функция определяющая набор имен, привязанных к постоянным значениям, таким как числа, строки и т.д. Перечисления полезны для представления данных, представляющих конечный набор состояний, таких как дни недели, месяцы года и т.д.

Enum был добавлен в Python 3.4 в рамках PEP 435. Тем не менее, он доступен вплоть до версии 2.4 через компилятор pypy(версия компилятора Python).

Пример

Мы определяем простой класс (производный от перечисления), содержащий месяцы года. Каждому месяцу присваивается уникальная числовая константа.


from enum import Enum

class Months(Enum) :
    JANUARY=1
    FEBRUARY=2
    MARCH =  3
    APRIL=4
    MAY=5
    JUNE=6
    JULY=7
    AUGUST=8
    SEPTEMBER=9
    OCTOBER=10
    NOVEMBER=11
    DECEMBER=12

Как видно наш класс наследуется от Enum, который расширяет его функциональность.

Доступ к элементам

Есть несколько способов, которыми мы можем это сделать.


# по числовому значению
>>>print (Months(7))
Months.JULY

# используя элемент как индекс 
>>>print (Months['JULY'])
Months.JULY

# по имени константы
>>>print (Months.JULY)
Months.JULY

# по имени
>>>print (Months.JULY.name)
JULY

# по значению
>>>print (Months.JULY.value)
JULY

И наконец, перебор элементов Python перечисления производится циклом for


for month in (Months):
    print (month.name)

Таким образом, перечисления в Python упрощают создание и использование пользовательских спиcков.

Источник

Статьи по теме

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Back to top button