Встречается на 1% собеседований по Python
Как будешь внедрять зависимости без DI в Python
В Python можно внедрять зависимости без использования DI-фреймворков несколькими способами:
- Через аргументы конструктора (наиболее Pythonic-способ):
python
class Database:
def query(self, sql): ...
class UserService:
def __init__(self, db: Database):
self.db = db
db = Database()
service = UserService(db)- Через сеттеры (менее предпочтительно):
python
class UserService:
def set_db(self, db: Database):
self.db = db- Через фабричные функции:
python
def create_user_service(db: Database) -> UserService:
return UserService(db)- Используя контекстные менеджеры для временных зависимостей:
python
with Database() as db:
service = UserService(db)Ключевые принципы:
- Явное лучше неявного
- Зависимости должны передаваться явно
- Избегать глобальных состояний и синглтонов
- Предпочитать композицию наследованию
Для сложных проектов лучше использовать DI-контейнеры (injector, dependency-injector), но для большинства случаев хватает простой передачи через конструктор.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы