Risposte:
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 classi in C # o C ++ o Java, ci deve essere un motivo logico per raggruppare un set di funzioni in un genitore più grande, le strutture di dati ne sarebbero un buon esempio, un insieme congruo di funzioni che si applicano direttamente alla classe invece di un insieme di funzioni vagamente raccolte che sono di uso generale.
Un modulo è per il raggruppamento gerarchico complessivo 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". Poiché un modulo è solo un raggruppamento mentale, si tratta meno di quali tipi di sistemi sono presenti (classi o funzioni, onestamente probabilmente un mix dei due) e di più delle connessioni logiche tra i sistemi sotto il modulo.
La domanda di base è se devi avere istanze diverse del tuo modulo / classe. un modulo Python è come un singleton - ti riferisci sempre allo stesso oggetto, cioè se hai bisogno di istanze, hai bisogno di una classe.
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 della semplice impostazione di alcuni valori, consiglierei di avere il codice di inizializzazione nel __init__
metodo di una classe per la leggibilità.