Русский
Открыть в Telegram

Пост Скрытые фичи Enum: как выжать максимум

26 октября 2026
Б
Библиотека Python разработчика | Книги по питону
Скрытые фичи 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
6 · 670 ·

Рядом в ленте

ББиблиотека Python разработчика | Книги по питонуyield from — элегантная передача управления Если вы пишете генераторы, которые вызывают другие генераторы — забудьте про for x in sub(): yield x. Есть способ прББиблиотека Python разработчика | Книги по питонуdefault_factory в dataclass: мощнее, чем кажется Многие используют dataclass как удобный способ задать структуру с полями. Но редко кто по-настоящему раскрывает
это сообщение
ББиблиотека Python разработчика | Книги по питонуИногда в программе нужна очередь — контейнер, куда элементы добавляются с одной стороны и извлекаются с другой. В Python для этого можно использовать list: In :ББиблиотека Python разработчика | Книги по питонуНекоторый код может выводить интересующие вас данные в stdout, вместо того чтобы предоставлять API, возвращающий строку, пригодную для использования в программе
ББиблиотека Python разработчика | Книги по питонуБиблиотека Python разработчика | Книги по питону@BookPython · канал · Технологии
17 954подписчиков552средний охват поста
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем