dicon,python的简单di容器注入liblary。
dicon的Python项目详细描述
dicon,python的简单di容器注入库。
--
dicon是一个简单的“di容器注入”库。
\faq
-q.“dicon”是依赖注入库吗?
-a.不,它不支持依赖注入。它支持DI容器注入和服务(单实例)定位器。
不修改类型。
-`dicon.dicontainer`提供类解析器和单例定位。
对类型没有修改
``python
import dicon
a类:
pass
di_container=dicon.dicontainer()
di_container.register[a]()
di_container.freeze()
;解析类。
class_a=di_container.resolve[a]
>a=class_a()
.dicon.dicon。dicontainer不修改类型类型,不修改类型类型类型类型。icon.dicontainer不修改类型对象的。
断言类型(a)是一个
它只修改构造函数。(通常不会有问题。)
assert not(类a是a)嵌套的双容器注入
消息:
打印(消息,self._di_u容器)
@dicon.inject戋u di戋u容器(''u di戋u容器')
c类:
u di戋u容器=none戋这里我们得到了di container的实例。
def戋u init戋u(self):
self.戋b容器。解析[b]('b必须有dicontainer:')
di戋u容器=dicon.di container()
di_container.register[b]()
di_container.register[c]()
di_container.freeze()
di_container.resolve[c]()
;'将打印b必须有diconcontainer:…'
`````
```````
<
<
<
<
1.`@dicon.inject di_container“修改给定类的”init“以使”init“可以将”dicontainer作为参数。
2.'DeNoNosier-Reals'由'FooStudio.Bea',
BR/>将其本身与该参数联系起来。
BR/>更多细节,参见[测试](测试)。
BR/>其他现有解决方案
BR/>依赖注入-BR/> -有很多DI库:例如[注入器](http://GITHUB.CO/ALCETMAS/注入器),[项目](https://github.com/google/pinject)。
-imho,di对于python来说太复杂了。
-著名的liblaries太复杂,不清楚对程序的影响。
-似乎没有人支持嵌套注入。
-服务定位器
-[有线](https://github.com/mmerickel/wired)
-我个人觉得它太复杂了。
-[工厂](https://github.com/jammycakes/factoryfactory)
-它不支持多个服务定位器。
我在api中借用了[microresolver]的设计(https://github.com/neuecc/microresolver)。
--
dicon是一个简单的“di容器注入”库。
\faq
-q.“dicon”是依赖注入库吗?
-a.不,它不支持依赖注入。它支持DI容器注入和服务(单实例)定位器。
不修改类型。
-`dicon.dicontainer`提供类解析器和单例定位。
对类型没有修改
``python
import dicon
a类:
pass
di_container=dicon.dicontainer()
di_container.register[a]()
di_container.freeze()
;解析类。
class_a=di_container.resolve[a]
>a=class_a()
.dicon.dicon。dicontainer不修改类型类型,不修改类型类型类型类型。icon.dicontainer不修改类型对象的。
断言类型(a)是一个
它只修改构造函数。(通常不会有问题。)
assert not(类a是a)嵌套的双容器注入
消息:
打印(消息,self._di_u容器)
@dicon.inject戋u di戋u容器(''u di戋u容器')
c类:
u di戋u容器=none戋这里我们得到了di container的实例。
def戋u init戋u(self):
self.戋b容器。解析[b]('b必须有dicontainer:')
di戋u容器=dicon.di container()
di_container.register[b]()
di_container.register[c]()
di_container.freeze()
di_container.resolve[c]()
;'将打印b必须有diconcontainer:…'
`````
```````
<
<
<
<
1.`@dicon.inject di_container“修改给定类的”init“以使”init“可以将”dicontainer作为参数。
2.'DeNoNosier-Reals'由'FooStudio.Bea',
BR/>将其本身与该参数联系起来。
BR/>更多细节,参见[测试](测试)。
BR/>其他现有解决方案
BR/>依赖注入-BR/> -有很多DI库:例如[注入器](http://GITHUB.CO/ALCETMAS/注入器),[项目](https://github.com/google/pinject)。
-imho,di对于python来说太复杂了。
-著名的liblaries太复杂,不清楚对程序的影响。
-似乎没有人支持嵌套注入。
-服务定位器
-[有线](https://github.com/mmerickel/wired)
-我个人觉得它太复杂了。
-[工厂](https://github.com/jammycakes/factoryfactory)
-它不支持多个服务定位器。
我在api中借用了[microresolver]的设计(https://github.com/neuecc/microresolver)。