一个简单的基于类型的依赖注入库

simple-injection的Python项目详细描述


简单注射

Build StatuscodecovDocumentation StatusPyPI versionPyPI license

简介

简单注入是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上找到。在

贡献

捐款是非常受欢迎的。欢迎添加问题或提出请求!在

许可证

MIT

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将HashMap<String,Object>从一个活动传递到另一个活动   java如何手动加密socket连接的流量?   java正则表达式生成一个不正确的结果   Java方法引用具有泛型参数的方法   java app setBackground()错误:不兼容的类型:int无法转换为Drawable   java是启动Spring引导而不是SpringApplication的其他方法。跑   无法打开java类路径资源[org/quartz/impl/jdbcjobstore/tables_h2.sql],因为它不存在   spring使用Java,如何确定来自tomcat Web服务器的出站服务调用?   java获取多个同名的XML元素JAXB   java使用Ant从同一代码库构建Swing和Android应用程序   JComponent的java重绘方法不起作用   java目标不可访问,标识符“beanName”解析为null   smtp是否有支持esmtp管道的java api?   java如何在Spring中自动连接业务对象   java在Hibernate中没有其他保存实体的方法吗?   针对两个客户机的SpringJavaWeb应用程序项目开发   使用split的java标记化输入