Attualmente sto imparando Python (da Java) e ho una domanda sui contratti.
Esempio: un'applicazione definisce un'interfaccia che tutti i plugin devono implementare e quindi l'applicazione principale può chiamarla.
In Java:
public interface IPlugin {
public Image modify(Image img);
}
public class MainApp {
public main_app_logic() {
String pluginName = "com.example.myplugin";
IPlugin x = (IPlugin) Class.forName(pluginName);
x.modify(someimg);
}
}
Il plugin implementa l'interfaccia e usiamo la riflessione nell'app principale per chiamarla. In questo modo, c'è un contratto tra l'app principale e il plugin a cui entrambi possono fare riferimento.
Come si fa a fare qualcosa di simile in Python? E inoltre, quale approccio è migliore?
P.S. Non sto postando questo su SO perché sono molto più interessato alla filosofia che sta dietro i due approcci.