Как реализовать dependency injection в Python?

Senior
335 просмотров
AFK Offer AI

DI — передача зависимостей извне, а не создание внутри класса. Простейший вариант: __init__(self, repo: UserRepo). Вместо self.repo = PostgresRepo() — передаёшь снаружи. Для тестов подставляешь mock. Фреймворки DI: dependency-injector, python-inject, FastAPI Depends(). FastAPI Depends — самый популярный: def get_db(): yield session; @app.get("/") def handler(db=Depends(get_db)). Без фреймворка — просто конструктор. DI делает код тестируемым, модульным, следует принципу D из SOLID.

Следующий вопрос

Какие best practices для REST API?