Sobes.tech
Junior — Middle
87

Comment peut-on implémenter l'injection de dépendances en Python sans utiliser de conteneurs DI?

Réponse de l'IA

sobes.tech IA

В Python внедрение зависимостей (Dependency Injection, DI) можно реализовать без использования специализированных DI-контейнеров следующими способами:

  1. Внедрение через конструктор (Constructor Injection) Передача зависимостей через параметры конструктора класса.
class Service:
    def do_something(self):
        print("Service is working")

class Client:
    def __init__(self, service):
        self.service = service

    def run(self):
        self.service.do_something()

service = Service()
client = Client(service)
client.run()
  1. Внедрение через сеттеры (Setter Injection) Зависимость передается через методы установки после создания объекта.
class Client:
    def set_service(self, service):
        self.service = service

    def run(self):
        self.service.do_something()

client = Client()
client.set_service(Service())
client.run()
  1. Внедрение через параметры методов (Method Injection) Зависимость передается непосредственно в метод, где она нужна.
class Client:
    def run(self, service):
        service.do_something()

client = Client()
client.run(Service())
  1. Использование функций высшего порядка или замыканий Можно передавать зависимости как аргументы функций или использовать замыкания.

  2. Использование глобальных или модульных переменных Менее предпочтительный способ, но иногда используется для простых случаев.

Все эти способы позволяют контролировать зависимости явно, что упрощает тестирование и поддержку кода без необходимости использовать сложные DI-фреймворки.