一个简单的基于类型的依赖注入库
simple-injection的Python项目详细描述
简单注射
简介
简单注入是python中一种简单的、面向对象的依赖注入方法。 简单注入的目标是在python应用程序中允许简单而有效的依赖注入,而不需要使用应用程序中本机的任何东西。这意味着简单的注入不需要在代码中的任何地方使用装饰器或任何其他东西。所需要的只是python类型化。在
特点
- 只依赖于本机python代码和类型。服务是通过键入注释注入的,而不是通过在代码中输入变量名或修饰符。在
- 轻松定义服务生命周期。在
- 在应用程序中强制键入。在
- 将抽象服务绑定到它们的实现。在
- 以任何顺序添加服务,当服务被请求时,将发生解析。在
安装
只需通过pip安装简单注入。在
pip install simple-injection
使用
由于简单的注入只依赖于打字,所以很容易添加到应用程序中。在
^{pr2}$这种依赖注入的方法使得在开发和单元测试时很容易使用mock。在
classMockDependency:defhello(self):print("Hello from MockDependency!")collection=ServiceCollection()collection.add_transient(Dependency,MockDependency)collection.add_transient(Service)collection.resolve(Service).hello()# Outputs: Hello from MockDependency!
这也可以通过使用依赖项和模拟继承的接口(或基类)来实现,但正如上面的示例所示,这不是必需的。在
简单注入还允许您简单地将字符串和其他常量注入到依赖项中,很容易将所需的依赖项注入到带有常量的类中。在
fromsimple_injectionimportServiceCollection,ServiceResolverFlagsclassDependency:def__init__(self,my_str:str):self.my_str=my_strclassService:def__init__(self,dependency:Dependency,my_int:int):self.my_intself._dependency=dependencydefget_str(self):returnself._dependency.my_strcollection=ServiceCollection()collection.add_transient(Dependency,args=["Example string!"])collection.add_transient(Service,args=[ServiceResolverFlags.REQUIRED_SERVICE,23])service=collection.resolve(Service)service.my_int# 23service.get_str()# Example string!
更多示例请参见examples。在
文件
关于简单注入的文档可以在readthedocs上找到。在
贡献
捐款是非常受欢迎的。欢迎添加问题或提出请求!在
许可证
- 项目
标签: