Skip to content

Constructor Injection

The primary injection mechanism. The container analyzes __init__ type hints and resolves dependencies automatically.

from inversipy import Container

class Database:
    def query(self, sql: str) -> list:
        return []

class UserRepository:
    def __init__(self, db: Database) -> None:
        self.db = db

container = Container()
container.register(Database)
container.register(UserRepository)

repo = container.get(UserRepository)  # Database injected automatically

Classes remain completely framework-agnostic. They can be instantiated manually:

db = Database()
repo = UserRepository(db=db)