In Python, è meglio definire un modulo con funzioni o un modulo con una classe che contiene funzioni? [chiuso]

12

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.

    
posta TK100 25.01.2013 - 22:12
fonte

2 risposte

8

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.

  • Modulo di funzioni: scopo generale, utilità e più funzioni "globali"
  • Modulo di classi di funzioni: classi raggruppate di esigenze simili, diversi tipi di dati dell'elenco collegato o funzioni di elaborazione audio o diversi tipi di albero.

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.

    
risposta data 25.01.2013 - 22:38
fonte
7

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à.

    
risposta data 26.01.2013 - 06:58
fonte

Leggi altre domande sui tag