在Java IoC/DI中,这是一种非常常见的做法,广泛用于web应用程序、几乎所有可用的框架和Java EE.另一方面,也有很多大型Python web应用程序,但除了Zope(我听说Zope编写起来应该非常糟糕)之外,IoC在Python世界中似乎并不常见.(如果你认为我错了,请举几个例子).
当然,有几个流行的Java IOC框架可用于Python,例如springpython个.但它们似乎都没有得到实际apply.至少,我从来没有偶然发现过一个基于Django或sqlalchemy+<insert your favorite wsgi toolkit here>
的Web应用程序,它使用这样的东西.
在我看来,IoC有合理的优势,例如,可以很容易地替换django-default-user-model,但是在Python中广泛使用接口类和IoC看起来有点奇怪,并不是"pythonic".但是也许有人有一个更好的解释,为什么IoC在Python中没有被广泛使用.