Что такое Dependency Inversion Principle?

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

DIP — модули высокого уровня не зависят от модулей низкого уровня, оба зависят от абстракций. Плохо: class UserService: self.repo = PostgresRepo() — жёсткая зависимость. Хорошо: class UserService: def __init__(self, repo: UserRepo) — зависимость от абстракции. UserRepo — Protocol или ABC. При создании передаёшь конкретную реализацию. Для тестов — MockRepo. В Python: type hints + DI через конструктор. FastAPI Depends() автоматизирует. DIP — основа для тестируемости и гибкости архитектуры.

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

Что такое broadcasting в NumPy?