Check

ABC и интерфейсы

Python Senior Яндекс
Что такое абстрактный базовый класс (`abc.ABC`)? Как вы используете его для задания интерфейсов в приложении, и чем это отличается от duck typing?
Ответы
Абстрактные базовые классы
`abc.ABC` позволяет объявлять абстрактные методы через `@abstractmethod`, которые обязательно должны быть реализованы в подклассах. Пример: ```python from abc import ABC, abstractmethod class Storage(ABC): @abstractmethod def get(self, key: str) -> str: ... ``` ABC задаёт номинальный интерфейс (наследование), duck typing — структурный ("если выглядит как утка, то это утка"). В динамическом Python часто достаточно duck typing, но ABC удобны для явной контрактации и документации.