Пример — небольшие протоколы collections.abc: Iterable, Sized и Container описывают отдельные возможности. Клиент может требовать только нужную операцию, а не большой универсальный интерфейс.
Приведите пример принципа разделения интерфейсов в стандартной библиотеке Python.
Пример — небольшие протоколы collections.abc: Iterable, Sized и Container описывают отдельные возможности. Клиент может требовать только нужную операцию, а не большой универсальный интерфейс.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Пример — небольшие протоколы collections.abc: Iterable, Sized и Container описывают отдельные возможности. Клиент может требовать только нужную операцию, а не большой универсальный интерфейс.
Функции, которая лишь перебирает элементы, достаточно Iterable; ей не обязательно требовать индексацию, изменение и удаление. Если нужна длина — это отдельная способность Sized, проверка принадлежности — Container. Более широкие абстракции объединяют возможности по смыслу. Это иллюстрация Interface Segregation Principle, а не доказательство, что любой класс стандартной библиотеки идеально ему соответствует. Важна минимальная зависимость клиента от ненужных методов.