Встречается на собеседованиях • сегодня

Какие плюсы и минусы интерфейса на основе Protocol в Python

Плюсы:

  1. Гибкость – Protocol позволяет определять интерфейсы без жесткого наследования.
  2. Утиная типизация – совместимость проверяется по наличию методов/атрибутов, а не по иерархии классов.
  3. Поддержка статической типизации – работает с mypy/pyright для проверки типов.
  4. Минимализм – не требует наследования от ABC или регистрации.

Минусы:

  1. Только для типизации – не заменяет абстрактные методы (нет @abstractmethod).
  2. Ограниченная поддержка – требует Python 3.8+ и активацию from __future__ import annotations для сложных случаев.
  3. Сложность в рантайме – проверки типов работают в статическом анализаторе, а не при выполнении.

Пример:

python
from typing import Protocol

class Flyer(Protocol):
    def fly(self) -> None: ...

class Bird:
    def fly(self) -> None:
        print("Flying!")

def make_fly(f: Flyer) -> None:
    f.fly()

bird = Bird()
make_fly(bird)  # OK
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы