enum

Содержание
Введение
Перебор (итерация)
Статьи про Python

Введение

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

Внутри перечисления члены могут сравниваться по идентичности

Также по ним можно итерировать (пример)

Создайте файл enum_demo.py и копируйте туда код из примеров.

Запустить файл можно командой python3 enum_demo.py

from enum import Enum # Using enum class create enumerations class Days(Enum): Mon = 1 Tue = 2 Wed = 3 Sun = 7 # print the enum member as a string print ("The enum member as a string is : ", end="") print (Days.Mon) # print the enum member as a repr print ("The enum member as a repr is : ", end="") print (repr(Days.Sun)) # Check type of enum member print ("The type of enum member is : ", end ="") print (type(Days.Mon)) # print name of enum member print ("The name of enum member is : ", end ="") print (Days.Tue.name) # print value of enum member print ("The value of enum member is : ", end ="") print (Days.Tue.value) print(f"{Days.Wed} name is {Days.Wed.name} value is {Days.Wed.value}")

python enum_demo.py

The enum member as a string is : Days.Mon The enum member as a repr is : <Days.Sun: 7> The type of enum member is : <enum 'Days'> The name of enum member is : Tue The value of enum member is : 2 Days.Wed name is Wed value is 3

Перебор (итерация)

Можно перебрать члены класса циклом

for day in Days: print(f"{day} name is {day.name} value is {day.value}")

Days.Mon name is Mon value is 1 Days.Tue name is Tue value is 2 Days.Wed name is Wed value is 3 Days.Sun name is Sun value is 7

Пример

Попробуем разобраться для чего нужен enum.

Допустим стоит задача создать класс User, у которого есть два атрибута name и type

name - строка

type - кастомный тип, может иметь три значения Admin, Moderator и Customer

Требования:

Если user_a и user_b разных типов, это должно быть видно при проверке функцией type

user_a.type == user_b.type False

Тип должен быть кастомным, называться может USER_TYPE, UserType или что-то в этом роде.

type(user_a.type) <class 'USER_TYPE&39;>

Из второго требования вытекает, что тип не дожен быть просто строкой "Admin", "Moderator" или "Customer"

Похожие статьи
Интерактивный режим
dict, list, str
\: перенос строки
if, elif, else
Циклы
Функции
try except
Пакеты
ООП
Опеределить тип переменной Python
Работа с REST API на Python
Файлы: записать, прочитать…
Работа с базами данных
datetime: Дата и время в Python
json.dumps
Сложности при работе с Python
Фреймворки: Django, Flask
socket: Python Sockets
Виртуальное окружение
subprocess: bash команды из Python
multiprocessing: несколько процессов одновременно
psutil: cистемные ресурсы
sys.argv: аргументы командной строки
PyCharm: IDE
pydantic: валидация данных
paramiko: SSH из Python
logging: запись в лог
Обучение Python

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: