Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: typing, protocol, interface

Protocol из модуля typing – назначение и применение?

Вопрос проверяет понимание структурной типизации и использования Protocol для определения интерфейсов.

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

Protocol определяет структурную типизацию — объект считается подходящим, если имеет нужные методы и атрибуты, независимо от наследования. Это полезно для утиной типизации с проверкой типов.

Длинный ответ

Protocol из модуля typing позволяет определять интерфейсы через структурную типизацию, где совместимость определяется наличием методов, а не наследованием.

Основные концепции:

  • Структурная типизация: объект подходит, если имеет требуемую структуру

  • Утиная типизация: "если ходит как утка и крякает как утка, то это утка"

  • Статическая проверка: mypy проверяет соответствие Protocol

Пример использования:

from typing import Protocol

class Readable(Protocol):
    def read(self) -> str: ...

class FileReader:
    def read(self) -> str:
        return "file content"

class StringReader:
    def read(self) -> str:
        return "string content"

def process_readable(reader: Readable) -> None:
    print(reader.read())

# Оба объекта подходят, хотя не наследуют от Readable
process_readable(FileReader())
process_readable(StringReader())

Применение:

  • Определение интерфейсов для плагинов

  • Тестирование с mock-объектами

  • Описание ожидаемого поведения функций

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    8

Навыки

  • Python

    Python

Ключевые слова

#typing

#protocol

#interface

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.