Встречается на собеседованиях • сегодня
Какие плюсы и минусы интерфейса на основе 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
интервью вопросы и ответы