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"
C | |
C++ | |
Go | |
Groovy | |
Java | |
JavaScript | |
PHP | |
Python | |
Ruby | |
.NET/C# | |
Thrift | |
Теория Программирования |
РЕКЛАМА от Google. Может быть недоступна в вашем регионе.
Конец рекламы от Google. Если в блоке пусто считайте это рекламой моей телеги