Duck typing ориентируется на поддерживаемые операции, а не на наследование от конкретного класса. Структурная статическая типизация выражает похожую идею через Protocol, но это не одно и то же.
Что такое структурная типизация (duck typing) в Python?
Duck typing ориентируется на поддерживаемые операции, а не на наследование от конкретного класса. Структурная статическая типизация выражает похожую идею через Protocol, но это не одно и то же.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Duck typing ориентируется на поддерживаемые операции, а не на наследование от конкретного класса. Структурная статическая типизация выражает похожую идею через Protocol, но это не одно и то же.
Функция может принимать любой объект с подходящим методом read, не проверяя его номинальный класс. Protocol позволяет описать такой контракт для анализатора типов. Обычный duck typing обнаруживает несовместимость при выполнении операции; аннотация сама по себе не выполняет полноценную runtime-проверку. Важны не только имена методов, но и их поведение.
Источник: typing.python.org.