Ich glaube nicht wirklich , dass DI / IoC ist , dass ungewöhnlich in Python. Was jedoch ungewöhnlich ist, sind DI / IoC- Frameworks / Container .
Denken Sie darüber nach: Was macht ein DI-Container? Es erlaubt Ihnen
- Verdrahten Sie unabhängige Komponenten zu einer vollständigen Anwendung ...
- ... zur Laufzeit.
Wir haben Namen für "Verkabelung zusammen" und "zur Laufzeit":
- Skripterstellung
- dynamisch
Ein DI-Container ist also nichts anderes als ein Interpreter für eine dynamische Skriptsprache. Lassen Sie mich das umformulieren: Ein typischer Java / .NET DI-Container ist nichts anderes als ein beschissener Interpreter für eine wirklich schlechte dynamische Skriptsprache mit hintern hässlicher, manchmal XML-basierter Syntax.
Warum sollten Sie beim Programmieren in Python eine hässliche, schlechte Skriptsprache verwenden, wenn Sie über eine schöne, brillante Skriptsprache verfügen? Eigentlich ist das eine allgemeinere Frage: Wenn Sie in so ziemlich jeder Sprache programmieren, warum sollten Sie eine hässliche, schlechte Skriptsprache verwenden, wenn Sie Jython und IronPython zur Verfügung haben?
Um es noch einmal zusammenzufassen: Die Praxis von DI / IoC ist in Python aus genau den gleichen Gründen genauso wichtig wie in Java. Die Implementierung von DI / IoC ist jedoch in die Sprache integriert und oft so leicht, dass sie vollständig verschwindet.
(Hier eine kurze Beschreibung für eine Analogie: In der Assembly ist ein Unterprogrammaufruf eine ziemlich wichtige Angelegenheit - Sie müssen Ihre lokalen Variablen und Register im Speicher speichern, Ihre Rücksprungadresse irgendwo speichern und den Anweisungszeiger auf das von Ihnen aufgerufene Unterprogramm ändern. Sorgen Sie dafür, dass es nach Abschluss des Vorgangs irgendwie in Ihr Unterprogramm zurückspringt, platzieren Sie die Argumente an einer Stelle, an der der Angerufene sie finden kann, und so weiter. IOW: In der Assembly ist "Unterprogrammaufruf" ein Entwurfsmuster, und bevor es Sprachen wie gab In Fortran, in das Unterprogrammaufrufe integriert waren, erstellten die Benutzer ihre eigenen "Unterprogramm-Frameworks". Würden Sie sagen, dass Unterprogrammaufrufe in Python "ungewöhnlich" sind, nur weil Sie keine Unterprogramm-Frameworks verwenden?)
BTW: für ein Beispiel , wie es aussieht DI zu ihrem logischen Ende zu nehmen, einen Blick auf Gilad Bracha ‚s Neusprech Programmiersprache und seine Schriften über das Thema: