python dependency injector
1.0.0
Dependency Injector
? Dependency Injector
是 Python 的依賴注入框架。
它有助於實現依賴注入原則。
Dependency Injector
的主要特點:
Factory
、 Singleton
、 Callable
、 Coroutine
、 Object
、 List
、 Dict
、 Configuration
、 Resource
、 Dependency
和Selector
提供者來協助組裝物件。請參閱提供者。yaml
、 ini
和json
檔案、 pydantic
設定、環境變數和字典中讀取配置。請參閱配置提供者。mypy
友善。請參閱鍵入和 mypy。Cython
寫。 from dependency_injector import containers , providers
from dependency_injector . wiring import Provide , inject
class Container ( containers . DeclarativeContainer ):
config = providers . Configuration ()
api_client = providers . Singleton (
ApiClient ,
api_key = config . api_key ,
timeout = config . timeout ,
)
service = providers . Factory (
Service ,
api_client = api_client ,
)
@ inject
def main ( service : Service = Provide [ Container . service ]) -> None :
...
if __name__ == "__main__" :
container = Container ()
container . config . api_key . from_env ( "API_KEY" , required = True )
container . config . timeout . from_env ( "TIMEOUT" , as_ = int , default = 5 )
container . wire ( modules = [ __name__ ])
main () # <-- dependency is injected automatically
with container . api_client . override ( mock . Mock ()):
main () # <-- overridden dependency is injected automatically
當您呼叫main()
函數時, Service
相依性會自動組裝和注入。
當您進行測試時,您可以呼叫container.api_client.override()
方法來用模擬取代真實的API客戶端。當您呼叫main()
時,模擬會被注入。
您可以用另一個提供者覆蓋任何提供者。
它還可以幫助您針對不同環境重新配置專案:用開發或階段上的存根取代 API 用戶端。
使用Dependency Injector
,物件組裝被整合到一個容器中。依賴注入是明確定義的。這使得理解和改變應用程式的工作方式變得更容易。
請造訪文件以了解有關 Python 中的依賴注入和控制反轉的更多資訊。
該軟體包在 PyPi 上可用:
pip install 依賴注入器
該文件可在此處取得。
選擇以下選項之一:
選擇以下選項之一:
此框架遵循 PEP20(Python 之禪)原則:
Explicit is better than implicit
您需要明確指定如何組裝以及在何處注入依賴項。
該框架的強大之處在於其簡單性。 Dependency Injector
是一個功能強大的概念的簡單工具。
Dependency Injector
加註星標Dependency Injector
啟動一個新項目Dependency Injector
develop
分支發起拉取請求