Вопрос проверяет понимание механизма внедрения зависимостей, используемого для повышения гибкости и тестируемости кода.
Dependency Injection — это способ передать объект, от которого зависит другой объект, извне, а не создавать его внутри. Это помогает избежать жестких связей между компонентами и облегчает тестирование.
Основная идея:
Зависимость (например, сервис) создается не внутри класса, а передается ему.
Класс не знает, как создается зависимость, он только использует её.
Варианты внедрения:
Через конструктор (наиболее частый)
Через сеттер
Через метод
class Service:
def get_data(self):
return "data"
class Controller:
def __init__(self, service):
self.service = service
controller = Controller(Service()) # внедрение зависимостиПреимущества:
Упрощает модульное тестирование (можно подставить мок).
Повышает гибкость архитектуры.
Уменьшает связанность компонентов.
Вывод:
Используйте DI, чтобы упростить замену зависимостей, протестировать классы изолированно и следовать принципам SOLID.