This is a static archive of the Python wiki, which was retired in February 2026 due to lack of usage and the resources necessary to serve it — predominately to bots, crawlers, and LLM companies.
Pages are preserved as they were at the time of archival. For current information, please visit python.org.
If a change to this archive is absolutely needed, requests can be made via the infrastructure@python.org mailing list.

Dependency Injection Pattern

The Dependency Injection Pattern, is described in Martin Fowler's article. It is closely related to the DependencyInversionPrinciple and the so called Inversion of Control (IoC) containers.

IoC is aimed at loosening the coupling of application components. The key concepts are:

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.

See Also

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.

Discussion


2026-02-14 16:07