Можешь привести пример внедрения зависимостей для замены конкретной реализации компонента?

В Python внедрение зависимостей часто реализуется через передачу конкретной реализации компонента в конструктор или метод класса, что позволяет легко заменить эту реализацию при необходимости.

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

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

В Python внедрение зависимостей часто реализуется через передачу конкретной реализации компонента в конструктор или метод класса, что позволяет легко заменить эту реализацию при необходимости.

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

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

В Python внедрение зависимостей часто реализуется через передачу конкретной реализации компонента в конструктор или метод класса, что позволяет легко заменить эту реализацию при необходимости.

Пример:

class Database:
    def connect(self):
        pass

class MySQLDatabase(Database):
    def connect(self):
        print("Подключение к MySQL")

class MockDatabase(Database):
    def connect(self):
        print("Подключение к мок базе для тестов")

class Service:
    def __init__(self, db: Database):
        self.db = db

    def perform(self):
        self.db.connect()

# Использование с реальной базой
service = Service(MySQLDatabase())
service.perform()  # Выведет: Подключение к MySQL

# Использование с мок-объектом для тестирования
test_service = Service(MockDatabase())
test_service.perform()  # Выведет: Подключение к мок базе для тестов

Такой подход позволяет легко менять реализацию компонента без изменения кода класса Service.

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

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

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

Подробнее