Saya tidak benar-benar berpikir bahwa DI / IIC itu tidak biasa dengan Python. Apa yang jarang, bagaimanapun, adalah DI / IOC kerangka / kontainer .
Pikirkan tentang hal ini: apa yang dilakukan wadah DI? Ini memungkinkan Anda
- menyatukan komponen independen menjadi aplikasi lengkap ...
- ... saat runtime.
Kami memiliki nama untuk "kabel bersama" dan "saat runtime":
- scripting
- dinamis
Jadi, wadah DI tidak lain adalah juru bahasa bahasa skrip yang dinamis. Sebenarnya, izinkan saya ulangi bahwa: Java / .NET DI container yang khas tidak lain adalah interpreter jelek untuk bahasa scripting dinamis yang sangat buruk dengan sintaks butt-ugly, terkadang berbasis XML,.
Ketika Anda memprogram dengan Python, mengapa Anda ingin menggunakan bahasa skrip yang jelek dan buruk saat Anda memiliki bahasa skrip yang indah dan cemerlang yang Anda inginkan? Sebenarnya, itu adalah pertanyaan yang lebih umum: ketika Anda memprogram dalam hampir semua bahasa, mengapa Anda ingin menggunakan bahasa scripting yang jelek dan buruk ketika Anda memiliki Jython dan IronPython yang Anda inginkan?
Jadi, untuk rekap: praktek DI / IoC sama pentingnya dengan Python seperti di Jawa, untuk alasan yang persis sama. Namun implementasi DI / IoC, dibangun ke dalam bahasa dan seringkali sangat ringan sehingga benar-benar hilang.
(Berikut adalah ringkasan singkat untuk analogi: dalam pertemuan, panggilan subrutin adalah masalah yang cukup besar - Anda harus menyimpan variabel lokal dan mendaftar ke memori, menyimpan alamat pengirim di suatu tempat, mengubah penunjuk instruksi ke subrutin yang Anda panggil, mengatur agar entah bagaimana melompat kembali ke subrutin Anda ketika sudah selesai, letakkan argumen di suatu tempat di mana callee dapat menemukan mereka, dan sebagainya.TKI: dalam pertemuan, "panggilan subrutin" adalah Pola Desain, dan sebelum ada bahasa seperti Fortran yang memiliki panggilan subrutin dibangun, orang-orang membangun "kerangka kerja subrutin" mereka sendiri. Apakah Anda mengatakan bahwa panggilan subrutin "tidak umum" dengan Python, hanya karena Anda tidak menggunakan kerangka kerja subrutin?)
BTW: untuk contoh seperti apa untuk mengambil DI kesimpulan logis, lihatlah Gilad Bracha 's Newspeak Pemrograman Bahasa dan tulisan-tulisannya tentang subjek: