On Sat, Nov 13, 2010 at 01:36:16PM +0100, lex mlist wrote: > Ma sai che non funziona?
aspetta a dirlo > questa è la classe ora: [...] non ricordo come accedi a `configuration` dal modulo `error`. from app import configuration questo non funziona se al momento dell'import la configurazione non è già stata letta import app app.configuration questo funziona anche se il modulo `error` viene importato prima che la configurazione venga letta, ma fai attenzione perché se l'eccezione viene lanciata prima che la configurazione sia letta, avrai ancora un dizionario vuoto. il problema sta' nel design dell'applicazione perché dipende dall'ordine in cui i moduli vengono importati ed questa è una trappola in cui puoi cadere con facilità in futuro anche se per il momento metti un cerotto. pensa a questo esempio: 2 file a cui in futuro si aggiunge un terzo: app.py conf = {} class Application: ... if __name__ == '__main__': app = Application(filename) import error # do stuff.. dopo abbastanza tempo da dimenticare che l'ordine di importazione dei moduli ha un significato aggiungi un altro file utils.py import error def dostaff(): try: ... except ...: error.qualcosa() app.py import utils conf = {} class Application: ... utils.dostaff() if __name__ == '__main__': app = Application(filename) import error # do stuff.. ecco che la fragilità della cosa si mosta nella sua pienezza. personalmente credo che sia meglio non far dipendere il modulo `error` da niente e passare come argomento tutto quello di cui ha bisogno: def error(debug=False): if debug: ... else: ... ma ancora meglio può essere l'uso del modulo `logging` della libreria standard e usare `log.debug()` ovunque senza test di sorta e lasciare la configurazione del logger e degli observer il compito di gestire la cosa. questo per evitare il prolificare ovunque nel codice di variabili di `debug` e limitarne l'uso solo dove sia ha un _vero_ e _provato_ problema di performance. m. -- Lo punite del fatto che la sua infanzia ha strisciato sul suolo senza stelo e senza tutore; gli imputate come un misfatto l'isolamento in cui lo avete lasciato; della sua sventura fate il suo delitto! Nessuno gli ha insegnato a sapere ciò che faceva: quest'uomo ignora. La sua colpa appartiene al suo destino, non a lui. Voi colpite un innocente. -- Victor Hugo _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python