[Python] Organizzare una classe...

enrico franchi enrico.franchi a gmail.com
Ven 17 Maggio 2013 20:25:53 CEST


Una oggetto non ragiona in termini di 'intero programma' (a meno che
la sua semantica non sia proprio di rappresentare il processo). Nel
tuo caso vuoi un oggetto che rappresenta un archivio zip... salvo che
a naso c'e' gia' fatto nell'appropriata libreria, al piu' ha senso
lanciare un'eccezione nel costruttore se il file non esiste.

Ti invito comunque a riflettere che: se anche il file esiste quando
istanzi l'oggetto, nulla ti garantisce che continuera' ad esistere
quando ci fai sopra le operazioni. Fallire subito puo' avere senso (a
patto che poi non assumi che il file sia ancora li). Oppure potresti
controllare che esiste e prenderti un descrittore di file -- che
rimane al tuo processo --.

In generale mi viene da dire che piu' simile la semantica del
costruttore e' ad "aprire il file" e piu' senso abbia lanciare
eccezione per un file che non esiste. Per un oggetto impostato piu'
come 'descrizione', lo vedo inappropriato (anzi, potrebbe avere senso
creare il file solo esplicitamente alla chiamata di un metodo).

2013/5/17 Gollum1 <gollum1.smeagol1 a gmail.com>:
> Sono arrivato al punto di dover scrivere la mia prima classe...
>
> in questo caso ho deciso di fare una classe per un oggetto che in
> realtà è un contenitore zippato di altri file (che gestirò poi nella
> loro creazione con un'altra classe).
>
> mi vengono alcuni dubbi...
>
> le operazioni principali da fare sono:
>
>  - la creazione del file zippato
>  - l'aggiunta di un elemento (file)
>  - l'estrazione
>  - il controllo dell'integrità
>  - altre ed eventuali...
>
> nella chiamata del metodo, con __init__ pensavo di istanziare
> l'oggetto, constatando l'esistenza del file passato come argomento.
>
> nel caso in cui il file non esista dovrebbe abortire l'intero programma.
>
> un caso particolare è quando il programma parte con alcuni parametri,
> che implicano la creazione di questo file.
>
> quindi dovrei chiamare il metodo create che crea il nuovo contenitore
> e lo lascia vuoto... però come dovrei fare in questo caso? se come
> prima chiamata uso il metodo create, in ogni caso verrebbe prima
> chiamato l'__init__ e quindi per il fatto che il file non esiste
> porterebbe all'abort...
>
> o sbaglio il concetto di come funziona la classe?
>
> seconda domando: il ritorno dell'__init__ dovrebbe essere una istanza
> della classe, quindi cosa devo ritornare?
>
> mi consigliate poi di aprire il file e chiuderlo all'interno di ogni
> metodo? in modo da non lasciare nulla in sospeso, oppure di aprirlo
> nel momento della creazione e poi fare un metodo di chiusura apposito?
>
> spero riusciate a dipanare i miei dubbi... (ho googlato un po' ma non
> sono riuscito a chiarirmi del tutto con gli esempi che ho trovato in
> rete).
>
> Byez
> --
> Gollum1
> Tesssssoro, dov'é il mio tessssoro...
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python



-- 
.
..: -enrico-


Maggiori informazioni sulla lista Python