Встречается на 1% собеседований по Python
В чем разница между интерфейсом на основе абстрактного класса и на основе Protocol в Python
Абстрактные классы (ABC) и Protocol решают схожие задачи, но по-разному:
- Абстрактные классы (
ABC):- Требуют явного наследования
- Могут содержать реализацию методов
- Проверяются статически (во время написания кода)
pythonfrom abc import ABC, abstractmethod class Animal(ABC): @abstractmethod def make_sound(self): pass
- Protocol:
- Не требует наследования (структурная типизация)
- Проверяется во время выполнения (runtime)
- Подходит для duck typing
pythonfrom typing import Protocol class SoundMaker(Protocol): def make_sound(self): ...
Ключевое отличие: ABC требует формального наследования, а Protocol проверяет только наличие нужных методов. Protocol более гибкий и соответствует философии утиной типизации Python.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы