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

В чем разница между интерфейсом на основе абстрактного класса и на основе Protocol в Python

Абстрактные классы (ABC) и Protocol решают схожие задачи, но по-разному:

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

Ключевое отличие: ABC требует формального наследования, а Protocol проверяет только наличие нужных методов. Protocol более гибкий и соответствует философии утиной типизации Python.

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

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

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

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