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