Python. Enum здорового человека
Если программист привык писать код, как это делали наши пращуры со времён аграрной революции, то перечисления у него выглядят как-то так:
class PigeonState:
eating = 0
sleeping = 1
flying = 2
PigeonState.sleeping
1
Конечно, у наших современников есть способ получше — enum.Enum:
import enum
class PigeonState(enum.Enum):
eating = 0
sleeping = 1
flying = 2
PigeonState.sleeping.value
1
Это не просто более многословный способ сделать то же самое. У енумов есть вагон плюшек, недоступных староверам. Например, можно делать синонимы состояний:
class PigeonState(enum.Enum):
eating = 0
sleeping = 1
flying = 2
# There is no way Frank is really doing that
thinking = 1
PigeonState.thinking
<PigeonState.sleeping: 1>
Или добавлять свои атрибуты:
class PigeonState(enum.Enum):
eating = (0, "Ест")
sleeping = (1, "Спит")
flying = (2, "Парит в небесах")
def __init__(self, id, title):
self.id = id
self.title = title
PigeonState.flying.id
2
PigeonState.flying.title
'Парит в небесах'
А ещё можно:
- сравнивать по is вместо ==
- сортировать с помощью enum.IntEnum
- итерировать по значениям
- создавать динамически
В общем, енумы — однозначное добро.
★ Подписывайтесь на новые заметки.