擅长:python、mysql、java
<p>IoC和DI在成熟的Python代码中非常常见。由于duck类型,您不需要框架来实现DI。</p>
<p>最好的例子是如何使用<code>settings.py</code>设置Django应用程序:</p>
<pre><code># settings.py
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': REDIS_URL + '/1',
},
'local': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'snowflake',
}
}
</code></pre>
<p>Django Rest框架大量使用DI:</p>
<pre><code>class FooView(APIView):
# The "injected" dependencies:
permission_classes = (IsAuthenticated, )
throttle_classes = (ScopedRateThrottle, )
parser_classes = (parsers.FormParser, parsers.JSONParser, parsers.MultiPartParser)
renderer_classes = (renderers.JSONRenderer,)
def get(self, request, *args, **kwargs):
pass
def post(self, request, *args, **kwargs):
pass
</code></pre>
<p>让我提醒一下(<a href="https://stackoverflow.com/a/140655">source</a>):</p>
<blockquote>
<p>"Dependency Injection" is a 25-dollar term for a 5-cent concept. [...] Dependency injection means giving an object its instance variables. [...].</p>
</blockquote>