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

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如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像