Dependency Injector for Python: provider 内で別のオブジェクトを生成

Dependency Injector — Dependency injection framework for Python

オブジェクトの生成方法を Module で定義し、その中で別のオブジェクトを自動生成したい場合、provider 関数に injector を渡せば良い。

from injector import Injector, Module, provider


class AppModule(Module):
    @provider
    def provide_hoge(self, injector: Injector) -> Hoge:
        return Hoge(injector.get(Fuga), "hello")


injector = Injector([AppModule])
hoge = injector.get(Hoge)