Python依赖注入框架

时间:2020-03-06 14:57:38  来源:igfitidea点击:

是否有与Python相对应的Guice(http://code.google.com/p/google-guice)框架?

解决方案

我没有使用过它,但是Spring Python框架基于Spring并实现了Inversion of Control。

在Python项目中似乎也有一个Guice:snake-guice

除此之外:

  • Zope组件架构
  • pyContainer

Spring Python是针对Java的基于Java的Spring框架和Spring Security的分支。该项目当前包含以下功能:

  • 控制反转(依赖注入)-使用经典XML或者python @Object装饰器(类似于Spring JavaConfig子项目)将事物连接在一起。尽管@Object格式与Guice风格不同(每个类中的集中布线与布线信息),但这是连接python应用程序的一种有价值的方法。
  • 面向方面的编程-在事务,安全性和缓存之类的水平编程范例(而不是垂直OOP继承)中应用拦截器。
  • DatabaseTemplate-从数据库读取需要打开光标,读取行和关闭光标以及异常处理程序的单调循环。使用此模板类,我们只需要SQL查询和行处理函数。 Spring Python完成了其余的工作。
  • 数据库事务处理-用事务处理包装多个数据库调用会使代码难以阅读。该模块提供了多种定义事务的方法,而不会使事情复杂化。
  • 安全性-插件安全拦截器可利用身份验证和域授权来锁定对方法的访问。
  • 远程处理-将本地应用程序轻松转换为分布式应用程序很容易。如果我们已经使用IoC容器构建了客户端和服务器,则从本地迁移到分布式只是配置更改。
  • Spring Wiki-Wiki是存储和管理内容的强大方法,因此我们创建了一个简单的演示程序!
  • Spring Bot-使用Spring Python构建一个微型机器人来管理开源项目的IRC通道。

作为monkeypatching的替代方法,我喜欢DI。诸如http://code.google.com/p/snake-guice/之类的新生项目可能很合适。

或者参阅Dennis Kempin撰写的博客文章Dependency Injection in Python(2008年8月)。

如果我们只想在Python中进行依赖项注入,则不需要框架。看一下Python方式的依赖注入。这确实非常快捷,简单,只有c。 50行代码。

有一些Guicey的python-inject项目。它非常活跃,比Spring-python少了很多代码,但是话又说回来,我还没有找到使用它的理由。