Встречается на 1% собеседований по Python
Какие плюсы и минусы интерфейса на основе Protocol в Python
Плюсы:
- Гибкость – Protocol позволяет определять интерфейсы без жесткого наследования.
- Утиная типизация – совместимость проверяется по наличию методов/атрибутов, а не по иерархии классов.
- Поддержка статической типизации – работает с
mypy/pyrightдля проверки типов. - Минимализм – не требует наследования от ABC или регистрации.
Минусы:
- Только для типизации – не заменяет абстрактные методы (нет
@abstractmethod). - Ограниченная поддержка – требует Python 3.8+ и активацию
from __future__ import annotationsдля сложных случаев. - Сложность в рантайме – проверки типов работают в статическом анализаторе, а не при выполнении.
Пример:
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
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы