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

ПостКак заменить цепочку isinstance на singledispatch

27 сентября 2026
Z
Zen of Python
Ссылка
нажмите — покажем
Как заменить цепочку isinstance на singledispatch Когда обработка типов разрастается, цепочка isinstance() превращает одну функцию в дерево условий. Декоратор functools.singledispatch оставляет единый интерфейс, а реализации для отдельных типов регистрируются независимо. Выбор происходит по типу первого аргумента. Учитывается и наследование: регистрация для Mapping подходит обычному dict через порядок разрешения методов. Обратная сторона той же механики: bool наследуется от int, поэтому для иной семантики ему нужен отдельный обработчик. Аннотация помогает register() определить тип, но list[str] и list[int] не становятся разными случаями во время выполнения. В разборе singledispatch также показано, как тестировать обработчики отдельно, проверять выбор через dispatch() и проектировать явный fallback.
7 · 1.2K ·

Рядом в ленте

ZZen of PythonПочему str.splitlines() видит больше переносов, чем чтение файла У Python два разных понятия границы строки. Универсальный режим чтения файла распознаёт LF, CR ZZen of PythonКак собирать динамические фильтры Django через Q-объекты Q() представляет условие для SQL-запроса. Такие объекты можно объединять операторами & и |, отрицать че
это сообщение
ZZen of PythonКак разделить синхронный и асинхронный Python-клиенты При переписывании akismet автор отказался от одного класса с обычными и асинхронными методами. Клиент провZZen of PythonКак запускать собственный SQL через миграции Django У models.Index нашлось необычное применение: его подкласс можно добавить в Meta.indexes, чтобы Django включи

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

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