Какими способами можно внедрить зависимость одного класса в другой

Python Middle Без компании
Какими способами можно внедрить зависимость одного класса в другой
Ответы
В Python есть несколько способов внедрения зависимостей (Dependency Injection): - **Через конструктор** (наиболее распространённый способ): ``` class Service: def do_something(self): return "Done" class Client: def __init__(self, service: Service): self.service = service def execute(self): return self.service.do_something() ``` - **Через сеттер**: ``` class Client: def set_service(self, service: Service): self.service = service ``` - **Через метод** (временная инъекция): ``` class Client: def execute(self, service: Service): return service.do_something() ``` - **Через интерфейс/абстрактный класс** (лучшая практика): ``` from abc import ABC, abstractmethod class IService(ABC): @abstractmethod def do_something(self): pass class RealService(IService): def do_something(self): return "Real implementation" ``` - **Используя DI-контейнеры** (например, injector, dependency-injector): ``` from dependency_injector import containers, providers class Container(containers.DeclarativeContainer): service = providers.Singleton(Service) client = providers.Factory(Client, service=service) ```