Nel mio codice entrambe le due opzioni di cui sopra funzionerebbero ugualmente bene, ma sono interessato a scoprire i pro e i contro di entrambi gli approcci.
Dipende onestamente dalle tue esigenze. Il più delle volte un modulo di funzioni sarà quello che stai cercando.
Le classi Python (imho) non dovrebbero essere pensate come le classi in C # o C ++ o Java, ci deve essere una ragione logica per raggruppare un insieme di funzioni in un genitore più grande, le strutture dati sarebbero un buon esempio di questo , vuoi un insieme congruente di funzioni che si applicano direttamente alla classe invece di un insieme di funzioni liberamente raccolte che sono di uso generale.
Un modulo è per il raggruppamento gerarchico generale di sistemi simili, di solito ho tutte le funzioni di utilità sotto un singolo modulo, tutti i dati sotto un altro, il mio livello dati e connettori sotto un modulo di tipo più "genitore". Dal momento che un modulo è solo un raggruppamento mentale, è meno su quali siano i tipi di sistemi in esso contenuti (classi o funzioni, onestamente probabilmente un mix dei due) e più sulle connessioni logiche tra i sistemi sotto il modulo.
La domanda di base è se devi avere istanze differenti del tuo modulo / classe. un modulo python è come un singleton - ti riferisci sempre allo stesso oggetto, cioè se tu hai bisogno di istanze, hai bisogno di un corso.
Tuttavia, se non hai bisogno di istanze potresti avere ancora la necessità di impostare il tuo "oggetto" su uno stato iniziale. mentre ciò è chiaramente possibile con un modulo semplice, se l'inizializzazione è più complessa di una semplice impostazione di alcuni valori, consiglierei di avere il codice di inizializzazione nel metodo __init__
di una classe per la leggibilità.
Leggi altre domande sui tag python