Dependency Injection Pattern
IoC is aimed at loosening the coupling of application components. The key concepts are:
- Components do not know each other directly.
- Components specify external dependencies using some kind of a key.
- Some "superior instance" (the IoC container, for example) resolves the dependencies once for each component and hereby "wires" the components together.
It is quite a challenge to implement an IoC container for statically typed languages. In python, however, the core concepts can be implemented quite easily. DependencyInjectionThePythonWay describes how.
PEAK:InversionOfControl -- Inversion of Control is a more general concept (small components relinquishing control, or networking control, rather than maintaining it internally,) but the name was overloaded historically to mean what is named by DependencyInjectionPattern. PEAK makes use of dependency injection, and the larger meaning of "Inversion of Control." The target page describes dependency injection.