1
據我所知,一個客戶端(核心程序)需要有一個通用類型來允許一個插件,另一個對象等成功地傳遞給客戶端。我看到這個答案上所以在這裏,Python如何實現依賴注入,因爲它沒有接口?
在Java中,使用規定的接口通過構造函數傳遞很有意義。從提到的SO問題,
public SomeClass (MyClass myObject) {
this.myObject = myObject;
}
據我瞭解,MyClass是一個接口定義的類型。 myObject實現它,實際上是必需的,因此允許我將myObject傳遞給構造函數。
那麼依賴注入如何在鴨子打字語言中工作呢? Python沒有接口。 Python的DI實現與Java或其他靜態類型語言相同,還是腳本語言的「解決方法」類型DI?
謝謝。我如何*保證*我得到了正確的類型傳遞給我的核心類?在Java中,如果我需要一個接口實現,我可以使插件設計器使用我的接口。我怎樣才能在Python中做到這一點? – johnny
記錄您的代碼,在文檔中包含顯式的規格,期望遵循規範。當所有其他的失敗時,趕上例外。 – wwii
@johnny:首先,請記住,實現一個接口意味着對象具有正確的方法簽名。它不能保證對象的行爲正確,你總是依賴於實現規範的人。 Python說:「類型不是一切,事實上它很少,所以我們不打算在像Java那樣的每個機會上保證它。」也就是說,如果你真的需要Python,你可以使用'type()'或'instanceof()'來檢查類型,如果你願意,你可以使用ABC來明確定義接口。 –