一个简单的依赖注入库

syringe的Python项目详细描述


https://travis-ci.org/remcohaszing/grunt-angular-templatecache.png?branch=master

一个简单的依赖注入库。

用法示例

首先用@provides('a lookup name')装饰类。

>>> import syringe
>>>
>>> @syringe.provides('cure')
... class Syrup:
...     def drink(self, person):
...         print('Nom nom')
...         person.health = 100
...

实例化它。请注意,无法实例化的另一个实例 用名称cure修饰的类。

>>> syrup = Syrup()

接下来使用inject('a lookup name')将其注入另一个类中。

>>> class Person:
...     cure = syringe.inject('cure')
...
...     def drink_medicine(self):
...         self.cure.drink(self)
...

当创建Person类的实例时,injecte名称的值 是提供并实例化的类的实例。

>>> person = Person()
>>> person.health = 20
>>> assert person.cure == syrup
>>> person.drink_medicine()
Nom nom
>>> assert person.health == 100

嘲笑

可以使用syringe.mock('a lookup name')

插入模拟实例
>>> try:
...     from unittest import mock
... except:
...     import mock
...
>>> m = syringe.mock('cure')
>>> person.drink_medicine()
>>> m.drink.assert_called_once_with(person)

安装

通过键入:

pip install syringe

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

推荐PyPI第三方库


热门话题
标头中的java cachecontrol未反映在jetty服务器上   java根据XSLT版本选择XSLT处理器   使用Lombok项目的java不明确方法调用   java powershell为每个文件构建一个要执行的字符串   java如何在Vaadin组合框中添加搜索图标?   从输入流读取有限长度的java最佳实践   动态操作后GridLayoutManager中的java项高度   java理解ThreadPoolExecutor中的池大小   在java中保持地址空间不变   java无法理解为什么我有空对象引用   java优化项目Euler#22   java会因为多线程而覆盖代码中的DataSnapshot吗   java文件夹层次结构遍历   java在循环中动态创建方法   音频Java无法组合2个以上。wav文件   java在具有UTF8样式名称的文件夹/目录中运行可运行的JAR文件   java如何在具有动态根键时反序列化JSON