Найти в Дзене
programmer's notes (python and more)

Программирование на Python. Библиотека enum для создания перечислений

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Стандартные библиотеки Python | programmer's notes (python and more) | Дзен
Статьи-ссылки на материалы моего канала о программировании на языке Python | programmer's notes (python and more) | Дзен

Статья является приложением к уроку

Использование библиотеки enum в программах на языке Python

Как я уже говорил на видеоуроке, перечисление очень похоже на словарь. Но при этом нельзя менять значения элементов перечисления и содержимое перечисления. Следовательно использовать перечисление следует в том случае, если вы хотите использовать в программе фиксированные наборы данных. Это могут быть цвета, месяцы, марка автомашин, константы разрешений и т.д. Т.е. это наборы констант. Определив их вы можете быть спокойны за их неизменность.

Ниже представлена программа с реализованным перечислением. Для его реализации следует создать класс производный от класса Enum из библиотеки enum.

Текст программы см. ниже
Текст программы см. ниже
primer142.py

Результат выполнения программы

['ФЕВ', 2]
февраль

январь 1
февраль ['ФЕВ', 2]
март 3
апрель 4
май 5
июнь 6
июль 7
август 8
сентябрь 9
октябрь 10
ноябрь 11
декабрь 12

Сделаем несколько пояснений к программе.

  1. В перечислении есть имена элементов и их значения. Например 'январь' это имя, а 1 это значение.
  2. В качестве значений могут быть взяты константы любого типа. В нашем примере это целые числа и одно значение это список.
  3. Ниже показано, как получить значение, если известно имя (value) и как получить имя (name), если известно значение.
  4. Наконец, сам класс, производный от Enum обладает свойством итератора, позволяющим выводит в цикле имена и значения элементов перечисления.
  5. Особо отметим два важных свойства представленных перечислений: 1. Не может быть двух элементов с одинаковым именем. 2. Если два элемента имеют одинаковые значения, то видимым является только первый по порядку элемент.

Перечисление можно легко преобразовать в список, что показано в программе ниже

Текст программы см. ниже
Текст программы см. ниже
primer143.py

Результат выполнения программы

[['январь', 1], ['февраль', 2], ['март', 3], ['апрель', 4], ['май', 5], ['июнь', 6], ['июль', 7], ['август', 8], ['сентябрь', 9], ['октябрь', 10], ['ноябрь', 11], ['декабрь', 12]]

Другой способ задания перечисления представлен ниже

Текст программы см. ниже
Текст программы см. ниже
primer144.py

Результат выполнения

red 1
blue 2
black 3
green 4

Для того, чтобы гарантировать уникальность значений элементов перечислений используется декоратор @unique. Пример программы представлен ниже.

Текст программы см. ниже
Текст программы см. ниже
primer145.py

Среди возможностей библиотеки enum следует отметить функцию auto() для генерации

Текст программы см. ниже
Текст программы см. ниже
primer146.py
primer146.py

Результат выполнения программы

A 1
B 2
C 3

Я изложил далеко не все возможности библиотеки enum. На мой взгляд этого достаточно для использования её в прикладных программах. Но возможно я напишу ещё одну статью о возможностях enum.

Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Зачем вам константы, просто не меняйте переменную
Зачем вам константы, просто не меняйте переменную