Типизация Python: аннотации, Protocol и TypeVar — задачи
Практика типизации Python: исправление аннотаций, Literal, Optional, TypeVar и Protocol.
Состав подборки: 6 задач на код. Условия и формат проверки указаны на странице каждой задачи.
Разберите маленький пример
Аннотация name: str описывает ожидаемый тип, но сама по себе не превращает число в строку и не проверяет HTTP-ввод. Отдельно решаются статическая совместимость интерфейса и проверка фактических данных во время выполнения.
На что обратить внимание
- Для значения «может отсутствовать» продумайте ветку None, а не только запись типа.
- Protocol описывает требуемые операции объекта; не подменяйте контракт проверкой имени класса.
- Обобщённая функция должна сохранять обещанную связь между типами входа и результата.
Порядок практики
- Аннотации типов Python: исправьте класс OrderLine — код.
- Python: Форматировщик записей лога с Literal, X | None и TypeAlias — код.
- Python: Обобщённая функция first_and_last с TypeVar и bound — код.
- Protocol в Python: задача на структурные интерфейсы — код.
- Python: Классификатор строк диагностики по инструменту — код.
- Python-пакет с моделями и Protocol: итоговая задача — код.
Куда двигаться дальше
Чтобы связать типы с устройством проекта и тестами, посмотрите программу курса Python для продвинутых.
- Аннотации типов Python: исправьте класс OrderLine
Исправьте аннотации атрибутов и методов класса OrderLine так, чтобы код проходил проверку типов mypy. Задача по Python.
Python для продвинутых: ООП, типизация и тестирование - Python: Форматировщик записей лога с Literal, X | None и TypeAlias
Отформатируйте записи лога с помощью Literal, X | None и TypeAlias. Практика аннотаций типов в Python.
Python для продвинутых: ООП, типизация и тестирование - Python: Обобщённая функция firstandlast с TypeVar и bound
Реализуйте firstandlast с TypeVar и bound, сохранив тип элементов последовательности в результате. Задача по типизации Python.
Python для продвинутых: ООП, типизация и тестирование - Protocol в Python: задача на структурные интерфейсы
Опишите структурный интерфейс через Protocol и используйте разные реализации уведомлений без общего базового класса.
Python для продвинутых: ООП, типизация и тестирование - Python: Классификатор строк диагностики по инструменту
Разберите смешанный вывод black, ruff и mypy: определите инструмент по строке диагностики и соберите сводку. Задача Python.
Python для продвинутых: ООП, типизация и тестирование - Python-пакет с моделями и Protocol: итоговая задача
Соберите ядро трекера задач как Python-пакет: модели, Protocol и сервис. Итоговая задача по архитектуре приложения.
Python для продвинутых: ООП, типизация и тестирование
