Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.
← К каналу

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

Скрытые фичи Enum: как выжать максимум  Многие используют Enum как простой список констант. Но у enu
Скрытые фичи 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 — это не просто константы. Это лёгкий способ инкапсулировать поведение и данные, улучшить читаемость и сделать код устойчивее к ошибкам.

👉 @BookPython
← Предыдущий пост Стандартный модуль json имеет интерфейс командной строки, который может быть пол… Следующий пост → Иногда в программе нужна очередь — контейнер, куда элементы добавляются с одной …
Другие главы канала «Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.»
Выберите главу, чтобы продолжить чтение
Все посты →
Глава от 16.05.2026
Некоторые модули Python компилируются непосредственно в сам интерпретатор. Они н…
👁 329 просмотров
Глава от 16.05.2026
В России можно посещать IT-мероприятия хоть каждый день: как оффлайн, так и онла…
👁 381 просмотров
Глава от 15.05.2026
collections.defaultdict позволяет создать словарь, который возвращает значение п…
👁 602 просмотров
Глава от 14.05.2026
Скажем, вы хотите получить первые N элементов итерируемого объекта. Прямолинейны…
👁 809 просмотров
Глава от 13.05.2026
⚡️API-тесты часто требуют рутины на генерацию кейсов и данных. Именно здесь реша…
👁 842 просмотров
Глава от 12.05.2026
Когда вы используете fork для создания нового процесса, текущее состояние генера…
👁 973 просмотров
Удалить пост или канал с МАКСОТЕКИ
Заявка подтверждается через бота Макс: нужно быть администратором канала и добавить бота МАКСОТЕКИ в администраторы. После проверки канал или конкретный пост скрывается с сайта.
🔍
Архив всех постов Макс
Поиск по тексту среди 5,301,115 постов из 199,483 каналов. Фильтры по дате, видео, репостам и удалённым публикациям.
1 ₽ — 7 дней доступа
далее 490 ₽/мес
Получить доступ за 1 ₽
или войти, если уже есть аккаунт

Связанные темы в других каналах

Каналы из той же тематики, где часто появляются близкие сюжеты
Вся тема →
@canalmaxone
AntiCloudMod
AntiCloudMod — сообщество для тех, кто ценит свободу общения без облачной цензуры. Здесь обсуждают альтернативные мессенджеры, инструменты для приватности и децентрализов…
👥 234 381 · +319/7д
@WylsacomRed
Wylsacom Red
Официальный канал Wylsacom в Max. Тут всё про технологии и жизнь в ногу со временем! Номер заявления для регистрации в РКН: № 6979154178 Розыгрыши: kichaev@wylsacom.med…
👥 139 992 · +5 384/7д
@BelgorodDRONE
Информация БПЛА Белгород, Белгородский район
Информация БПЛА Белгород, Белгородский район — специализированный канал в мессенджере Макс, посвященный новостям и информации о беспилотных летательных аппаратах в регион…
👥 124 529 · +4 334/7д
@TikTokModCloud
TikTokModCloud
Официальные обновления стабильного мода TikTok Чат: https://clck.ru/3S6mVh По рекламе: https://iimax.ru/dim4ugan
👥 60 620 · +2 213/7д
@hitech
Hi-Tech
Оперативные новости, обзоры гаджетов, собственное видео, трансляции мировых анонсов и мероприятий По вопросам сотрудничества и размещения рекламы i.ostapenko@corp.mail.r…
👥 53 260 · -147/7д
@dvizhitall
Движитал
Канал для людей, которым интересен технический прогресс на прикладном уровне. Идея полезного знания — суть каждого поста в этом канале. Powered by МТС Регистрация в Р…
👥 35 147 · +11 145/7д

Популярные посты канала «Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.»

Обычно вы взаимодействуете с генератором, запрашивая данные с помощью next(gen). В Python 3 вы также можете отправлять значения обратно в ге…
👁 6 917 просмотров
Если у вас есть ресурсоемкая задача для процессора и вы хотите использовать все доступные ядра, то multiprocessing.Pool - это то, что вам ну…
👁 6 871 просмотров
Одна и та же строка может быть представлена по-разному в Unicode, и стандарт это учитывает. Он определяет два типа эквивалентности: последо…
👁 6 850 просмотров
10 полезных библиотек для Python-разработчика Сегодня я подготовил для вас подборку из 10 полезных библиотек, которые могут сделать вашу ра…
👁 6 840 просмотров
Обработка исключений в асинхронных программах может быть непростой задачей. В asyncio, если корутина выбрасывает исключение, оно передаётся…
👁 6 824 просмотров
Как быстро очистить список в Python? Сегодня я покажу вам несколько способов очистки списка в Python и расскажу, какой вариант лучше в зави…
👁 6 823 просмотров
🔥 Как ускорить Python-код в 10 раз? Сегодня покажу вам мощный инструмент для оптимизации кода - Numba. Это библиотека, которая позволяет ко…
👁 6 822 просмотров
Сегодня я покажу вам простой, но очень полезный приём, который часто выручает при работе с Python-скриптами — автоматическое логирование выз…
👁 6 817 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 6 795 просмотров
Ранее мы затронули типизацию в фикстурах (косвенно), поэтому сегодня поговорим про: Protocol vs ABC: Утиная типизация на стероидах (Static …
👁 6 791 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 6 785 просмотров
🚀 5 крутых Python-фишек, о которых знают не все Python — мощный и удобный язык, но даже опытные разработчики иногда не знают всех его воз…
👁 6 778 просмотров
Сейчас покажу вам удобный способ следить за производительностью Python-кода прямо в терминале с помощью py-spy. 🔍 Что такое py-spy? py-spy…
👁 6 773 просмотров
Чтобы объект можно было использовать в качестве ключа словаря, он должен быть хешируемым. Хешируемые объекты поддерживают метод __hash__, ко…
👁 6 760 просмотров
Как упростить работу с аргументами в командной строке с помощью typer Раньше для CLI-приложений на Python я использовал argparse, потом был…
👁 6 753 просмотров
Python поддерживает цепочные присваивания со следующим синтаксисом: a = b = c = 42 Выглядит как цепочка присваиваний в C, но работает сове…
👁 6 744 просмотров
Иногда в программе нужна очередь — контейнер, куда элементы добавляются с одной стороны и извлекаются с другой. В Python для этого можно исп…
👁 6 740 просмотров
В Python очень короткий список встроенных констант. Одна из них — Ellipsis, которую также можно записать как .... Эта константа не имеет осо…
👁 6 740 просмотров
Чтобы сохранить любую информацию в памяти или на устройстве хранения, её необходимо представить в виде байтов. Python, как правило, предоста…
👁 6 739 просмотров
Если вы создаёте новые объекты внутри метода __init__, возможно, будет лучше передавать их как аргументы и использовать фабричный метод. Это…
👁 6 729 просмотров
🏷 Темы и теги
#FF0000 #00FF00 #telegram bots #web scraping #python #django #fastapi #asyncio #Технологии
📋 О канале Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.
Учим язык Python на практике. Создание веб-приложений: Django, Flask, FastAPI. Пишем ботов для Телеграм на Aiogram. Парсинг сайтов (Web Scraping): Selenium, BeautifulSoup (BS4), Scrapy. Работа с базами данных (PostgreSQL, Redis, SQL) и API. Асинхронное программирование (Asyncio). Настройка Docker, Git и Linux. Алгоритмы, задачи с собеседований и Roadmap для Junior Python Developer.
📊 Аналитика канала «Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.» ➡️ Перейти в канал Макс
Заявка в МАКСОТЕКА
Добавьте свой канал в каталог
Зарегистрируйтесь в личном кабинете и добавьте канал за пару кликов.
Перейти в личный кабинет →

Бесплатная регистрация, быстрая модерация.