[Python] variabili "globali" tra più moduli.

Giovanni Porcari giovanni.porcari a softwell.it
Sab 18 Maggio 2013 01:03:35 CEST


Il giorno 17/mag/2013, alle ore 23:52, Gollum1 <gollum1.smeagol1 a gmail.com> ha scritto:

> per la maggiore dovrebbe trattarsi di valori di variabili che vengono
> impostate in funzione degli argomenti passati dalla riga di comando.

Come regola generale utilizzo una classe primaria da
cui genero un istanza che sarà la mia radice.
A questa poi andrò ad 'appendere gli altri oggetti di
altre classi che eventualmente mi servissero e via dicendo.

Ho messo qualche metodo stupido e ti suggerisco di vedere
come l'uso di una property ti consenta di fare cose carine
come calcolare una sola volta e poi cachare dei dati.

Il vantaggio di questo approccio è, a mio avviso, il fatto
che nel namespace globale metti una sola referenza (in questo caso 'root')
e tutto si dirama da lì.

Qui parliamo di python ma in javascript, ad esempio, per non creare conflitti
con altre librerie il fatto di avere un'unica referenza, magari con un nome molto
originale, ti garantisce da possibili collisioni.


class MiaClasseBellissima(object):
    def __init__(self,par1=None,par2=None...)
	self.par1=par1
        self.par2=par2
        .....
        .....
    
    def faiQuesto(self):
        if self.par1==0:
	   .....
        self.datoCarino= self.preparaDatoCarino(self.par2,....)
        k = self.mioDatoLazy(self.datoCarino)
        .....

    
    def faiQuello(self):
        .....

    def preparaDatoCarino(self):
        .....

    @property
    def mioDatoLazy(self):
        if not hasattr(self,'_mioDatoLazy):
             self._mioDatoLazy=self.preparaMioDatoLazy()
        return self._mioDatoLazy

     def self.preparaMioDatoLazy(self):
         mioGrossoDizionario=dict()
         #fa un bel lavoro che va fatto solo una volta  per riempire mioGrossoDizionario
         return mioGrossoDizionario


if __name__=='__main__':
    #ottengo parametri

    root= MiaClasseBellissima(parametri)


Non so se è il modo migliore ma io mi ci sono sempre trovato benone...

Ciao
G.





Maggiori informazioni sulla lista Python