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

Когда лучше создавать интерфейс на основе Protocol в Python

Протоколы (Protocol) в Python полезны, когда нужна структурная типизация (утиная типизация) с проверкой типов через mypy/pyright. Основные случаи:

  1. Для абстракции без наследования – когда нужно определить интерфейс, но не хочется использовать ABC или наследование:
python
from typing import Protocol

class Drawable(Protocol):
def draw(self) -> None: ...

def render(obj: Drawable) -> None:
obj.draw()

text

2. **Для обратной совместимости** – если класс уже реализует нужные методы, но не наследуется от общего абстрактного класса.

3. **Для аннотации callback-ов** – когда нужно описать ожидаемую сигнатуру функции:
```python
class Processor(Protocol):
    def __call__(self, data: str) -> int: ...
  1. Для работы с внешними библиотеками – когда нужно типизировать объекты, которые вы не контролируете.

Протоколы особенно полезны в сочетании с @runtime_checkable, если нужна проверка типов во время выполнения.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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