1.5Kпросмотров
7.8%от подписчиков
5 марта 2026 г.
Score: 1.7K
Скрытые фичи Enum: как выжать максимум Многие используют Enum как простой список констант. Но у enum.Enum в Python есть куда больше возможностей — и они могут сделать код чище и мощнее. Вот несколько приёмов, которые мало кто использует — но зря. 1. Добавление поведения в Enum from enum import Enum class Status(Enum): DRAFT = 'draft' PUBLISHED = 'published' ARCHIVED = 'archived' def is_visible(self): return self in {Status.DRAFT, Status.PUBLISHED} Теперь Status.DRAFT.is_visible() — это просто и элегантно. 2. Enum с полями from enum import Enum class Color(Enum): RED = ('#FF0000', 'danger') GREEN = ('#00FF00', 'safe') def init(self, hex_code, label): self.hex_code = hex_code self.label = label Color.RED.hex_code # '#FF0000' Color.RED.label # 'danger' 3. Автоматические значения с auto() from enum import Enum, auto class Role(Enum): ADMIN = auto() USER = auto() GUEST = auto() Удобно, если не важны конкретные значения, а нужны уникальные. 4. Строгая сериализация В реальных приложениях (API, базы) лучше контролировать сериализацию enum'ов: import json class CustomEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, Enum): return obj.value return super().default(obj) json.dumps(Status.PUBLISHED, cls=CustomEncoder) # "published" 5. Сравнение по значению Status('draft') == Status.DRAFT # True Status('draft') is Status.DRAFT # True (enum гарантирует singleton) Итого: Enum — это не просто константы. Это лёгкий способ инкапсулировать поведение и данные, улучшить читаемость и сделать код устойчивее к ошибкам. 📲 Мы в MAX 👉@BookPython
1.5K
просмотров
1807
символов
Нет
эмодзи
Нет
медиа

Другие посты @BookPython

Все посты канала →
Скрытые фичи Enum: как выжать максимум Многие используют Enu — @BookPython | PostSniper