Dependency Injector — Dependency injection framework for Python
オブジェクト単体でなく配列を注入したい場合、multiprovider を使う。
from injector import Injector, Module, multiprovider
class AppModule(Module):
@multiprovider
def provide_hoges(self, injector: Injector) -> list[Hoge]:
return [
injector.get(Hoge1),
injector.get(Hoge2),
]
injector = Injector([AppModule])
hoges = injector.get(list[Hoge])
注意点
-
list
は Python 3.9 からサポートされた構文であり、過去のバージョンでもfrom __future__ import annotations
を記述すればそれ自体を使用することはできるが、inject はできない。その場合は代わりにtyping.List
を使う。