Ответ вслух Middle Типизация обновлено

Как вы используете типизацию в Python-проекте

Вопрос

Как вы используете аннотации типов в проекте и как они проверяются?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Аннотации пишу на всё публичное: сигнатуры функций и методов, поля классов. Интерпретатор их не проверяет, поэтому в CI запускаю mypy или pyright, для нового кода в строгом режиме, а старый код подтягиваю постепенно.

Что должно прозвучать в ответе

  • Аннотации не проверяются интерпретатором, проверка статическая

  • mypy или pyright в CI, строгий режим для нового кода

  • Современный синтаксис: встроенные дженерики, `X | None`, PEP 695

  • Protocol для зависимостей, TypedDict для словарей, Literal для режимов

  • Pydantic проверяет данные на границах системы

  • Постепенное внедрение, минимум `Any` и `type: ignore`

Что могут спросить следом

  • Что делать со сторонней библиотекой без типов?
  • Чем Protocol отличается от ABC?

Разбор

Образцовый ответ: «Аннотации пишу на всё публичное: сигнатуры функций и методов, поля классов. Интерпретатор их не проверяет, поэтому в CI запускаю mypy или pyright, для нового кода в строгом режиме, а старый код подтягиваю постепенно. Синтаксис современный: list[int], int | None, дженерики в квадратных скобках с 3.12. Для зависимостей описываю Protocol: сервис ожидает «что-то с методом send», и в тестах подставляю простой фейк без наследования. Ответы внешних API описываю TypedDict, режимы Literal или StrEnum. На границах системы, где данные приходят извне, статической проверки мало, там валидация во время выполнения через Pydantic. Стараюсь не плодить Any и type: ignore: каждое исключение с комментарием. Для библиотек без типов ищу пакеты-заглушки types-... или пишу свои .pyi».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.