Вопрос проверяет архитектурное мышление и понимание того, как снижать связность и повышать гибкость кода.
Зависимость от абстракций позволяет менять реализации без изменения основной логики. Код становится гибче и проще для тестирования. Это снижает связность между модулями. В результате система легче расширяется и сопровождается.
Зависимость от конкретных реализаций жёстко связывает части системы между собой.
Если код напрямую зависит от конкретного класса или библиотеки:
замена реализации требует переписывания логики
тестирование усложняется
изменения распространяются каскадно
Такая система плохо масштабируется.
Абстракция задаёт контракт, а не реализацию.
Зависимость от абстракций позволяет:
подменять реализации
изолировать детали
писать mock-объекты для тестов
В Python это часто реализуется через:
абстрактные базовые классы
duck typing
протоколы
На практике это даёт:
меньшую связанность
предсказуемые изменения
более чистую архитектуру
Зависимость от абстракций делает код устойчивым к изменениям и облегчает развитие системы без переписывания существующей логики.