Что такое структурная типизация (duck typing) в Python?

Duck typing ориентируется на поддерживаемые операции, а не на наследование от конкретного класса. Структурная статическая типизация выражает похожую идею через Protocol, но это не одно и то же.

Короткий ответ

Что ответить на собеседовании

Duck typing ориентируется на поддерживаемые операции, а не на наследование от конкретного класса. Структурная статическая типизация выражает похожую идею через Protocol, но это не одно и то же.

Подробный разбор

Ответ с пояснениями

Duck typing ориентируется на поддерживаемые операции, а не на наследование от конкретного класса. Структурная статическая типизация выражает похожую идею через Protocol, но это не одно и то же.

Функция может принимать любой объект с подходящим методом read, не проверяя его номинальный класс. Protocol позволяет описать такой контракт для анализатора типов. Обычный duck typing обнаруживает несовместимость при выполнении операции; аннотация сама по себе не выполняет полноценную runtime-проверку. Важны не только имена методов, но и их поведение.

Источник: typing.python.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее