Ho diversi algoritmi che vorrei testare con gli stessi set di dati per confrontare i loro risultati. Non so come progettarlo, quindi c'è la massima leggibilità e la massima efficienza.
Ho preso in considerazione la possibilità di creare una classe per ciascun algoritmo e dargli una copia dei dati con cui lavorare, ma non sembra che quella sia la risposta giusta:
- Ogni set di dati è abbastanza grande (10.000 float numpy array), quindi non voglio copiare ognuno di questi ~ 30 volte.
- Molti degli algoritmi hanno routine di pre-elaborazione simili (quindi la loro ripetizione per ciascun algoritmo sembra inutile)
- Alcuni algoritmi hanno un codice quasi identico, tranne alcuni parametri diversi.
Allo stesso tempo, avere una chiamata di funzione per algoritmo sembra anche sbagliata: come per (2), molti chiameranno le stesse funzioni di pre-elaborazione, e quindi diventa molto difficile dire chi sta chiamando chi.
Voglio essere in grado di consentire all'utente (che sarà io) di chiamare facilmente una varietà di algoritmi sui dati, mantenendo il codice il più chiaro possibile.
Continuo a pensare di aver bisogno dell'inverso di una classe; dove ogni oggetto di una classe avrà gli stessi metodi ma diversi dati, ho bisogno di qualcosa in cui ogni membro avrà gli stessi dati ma metodi diversi.