Riconosco pienamente che Python e Java sono linguaggi di programmazione diversi e dovrebbero essere usati in modo diverso. Detto questo, "Programmare un'interfaccia, non un'implementazione" è un buon consiglio di programmazione agnostico.
Supponiamo di avere un'interfaccia DAO in Java:
public interface DataDao {
Object load();
void update();
void delete();
}
La programmazione su quell'interfaccia mi consente di conservare i dati nei file mentre sono in fase di prototipazione, di scambiarli per un database man mano che procedo oltre, ecc. abbastanza facilmente, purché rispetti il contratto di DataDao
.
Qual è l'approccio / versione Pythonic (se esiste) alla programmazione di un contratto per mantenere le tue classi ortogonali, modulari e abilitare cambiamenti di implementazione senza attrito?