python的依赖注入

jacked的Python项目详细描述


Build StatusPypi versionScrutinizer Code Qualitycodecov

注意:此项目处于alpha状态

roid上的jacked~python

  • 一个轻巧易用的依赖注入框架。
  • 注入包含这些对象的objectsfunctionsclasseslists
  • jacked自动发现包中的可注射性。
  • 果汁上的松耦合
  • 非常适合测试代码!

安装

pip install jacked

用法

注入实例

要注入实例,请使用injectable装饰符标记类:

fromjackedimportinjectable@injectableclassCat:defsound(self):return'meow'

现在可以在任何地方的函数中注入它。将inject装饰器置于 函数或方法的顶部。让jacked知道要按类型注入的类型 提示您的参数:

@injectdefwhat_sound_does_it_make(cat:Cat):print(cat.sound())what_sound_does_it_make()

注入功能

注入函数的工作原理类似。只要确保你的函数有 正确的类型提示:

@injectabledefsome_func(x:int,y:int)->str:returnf'The sum of {x} and {y} is {x + y}'

与实例一样,注入如下:

@injectdefdo_something(func:Callable[[int,int],str]):print(func(21,21))do_something()

注入类

假设我们有和以前一样的Cat可注射的,我们可以注射 该类如下:

fromtypingimportType@injectdefdo_something(cat_type:Type[Cat]):print(cat_type.__name__)do_something()

注入列表

假设我们有以下两种同一母体的可注射性:

classAnimal(ABC):@abstractmethoddefsound(self):raiseNotImplementedError@injectableclassCat(Animal):defsound(self):return'meow'@injectableclassDog(Animal):defsound(self):return'bark'

现在可以将它们插入列表:

@injectdefwhat_sound_does_it_make(animals:List[Animal]):foranimalinanimals:print(f'The {animal.__class__.__name__} does {animal.sound()}')what_sound_does_it_make()

你也可以通过暗示 List[Type[...]]List[Callable[...]](由 注射目标)。

单重态

您可以将可注射项注释为singleton,这意味着如果可注射项是 一个类,只注入一个实例:

@injectable(singleton=True)classDog(Animal):defsound(self):return'bark'

自动发现

可以让jacked使用 discover函数:

fromjackedimportdiscoverdiscover('path/to/your/package')

该包中的所有python模块都被导入,可注入的是 注册的。

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

推荐PyPI第三方库


热门话题
junit cucumber为什么会找到“runTest.java”来运行测试?   在Eclipse中找不到java KeyPairGenerator   java NotSerializableException即使在实现Serializable之后   noclassdeffounderror(java字符串连接)为什么会出现这种异常?   java Guice:将接口绑定到由动态代理创建的实例   使用Spring数据neo4j创建空间索引时发生java错误   java对于需要在50多个excel文件上运行并且每个文件平均包含25k行的项目,最佳的方法是什么   javaNIO中的java缓冲区写入/发送消息问题   如何在Java/eclipse中添加不调用super()的警告   JavaSpring:mvcUrl映射错误的id   java应该在getInstance或构造函数中使用Init方法吗?   安卓中的java空指针异常错误   java Jsoup不能完全获取原始html代码