Как вы применяете принцип инверсии зависимостей (DIP) в Python?

DIP означает, что высокоуровневая логика зависит от абстракции, а конкретный адаптер её реализует. В Python это можно выразить Protocol, ABC или явным duck-typed контрактом.

Короткий ответ

Что ответить на собеседовании

DIP означает, что высокоуровневая логика зависит от абстракции, а конкретный адаптер её реализует. В Python это можно выразить Protocol, ABC или явным duck-typed контрактом.

Подробный разбор

Ответ с пояснениями

DIP означает, что высокоуровневая логика зависит от абстракции, а конкретный адаптер её реализует. В Python это можно выразить Protocol, ABC или явным duck-typed контрактом.

Например, сервис заказа получает репозиторий через конструктор и вызывает save(), не создавая внутри конкретный SQL-клиент. В production передаётся адаптер базы, в unit-тесте — контролируемая подмена. Dependency injection помогает реализовать принцип, но сам контейнер зависимостей не обязателен. Важно направить зависимость по смыслу домена, а не создать интерфейс для каждого класса без пользы.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее