[Python] Evitare le importazioni circolari

Francesco Maida francesco.maida a gmail.com
Dom 29 Mar 2015 16:34:53 CEST


Siccome ho un po di tempo libero volevo provare a scrivere una libreria in
Python che consenta di creare un file HTML scrivendo del codice. Allora ho
creato un package con una classe che gestisce il documento HTML; a sua
volta la classe richiama delle altre sottoclassi che gestiscono i vari
elementi che possono essere inseriti in un documento HTML: i DIV, le
immagini, e altre cose simili.

Qual'č il problema? Che per scrivere decentemente l'output su di un file di
testo vorrei poter indentare per bene il codice HTML. Per farlo mi sono
tenuto una variabile statica nella classe Documento che mi ricorda quanti
spazi di tabulazione devo inserire prima di scrivere ogni riga del codice.
Ogni sottoclasse (che gestisce i Div o le immagini) fa riferimento a questa
variabile per sapere quante tabulazioni deve inserire prima di scrivere il
testo.
Mi rendo conto che detto cosė non si capisce una fava, quindi provo a fare
un'esempio pratico:

Se devo scrivere in un file questo codice HTML:

<body><div>Ciao mondo</div></body>

ho bisogno di indentare il codice cosė (a sinistra il numero di
tabulazioni):

(0 TAB) <body>
(1 TAB) <div>
(2 TAB) Ciao mondo
(1 TAB) </div>
(0) TAB) </body>



Ad esempio questo č il codice che uso per la classe Documento. Quando
voglio creare un documento HTML, creo un istanza della classe e gli passo
il nome del file da creare (non ci sono controlli degli errori al momento)

https://gist.github.com/fmaida/8c9707012d7b67296596

Ad esempio quando voglio creare un div nella classe documento, viene
richiamata una classe come questa:

https://gist.github.com/fmaida/256154d8d7d1ec053bff

Oppure questa:

https://gist.github.com/fmaida/95f412d7cf96c4d79e53



So di non essere bravo a spiegare le cose, ma spero che in un modo o
nell'altro riuscirai a capire cosa intendo
-------------- parte successiva --------------
Un allegato HTML č stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150329/5f1a1e4e/attachment.html>


Maggiori informazioni sulla lista Python