Ho visto la gente usa scimmia-patching per impostare le opzioni di un modulo, ad esempio:Python: Qual è il modo consigliato per impostare le impostazioni di configurazione per un modulo quando lo si importa?
importazione mymodule
mymodule.default_img = "/my/file.png"
mymodule .view_default_img()
E Django, per esempio, ha settings.py per l'intera Django app, e mi gratifica sempre un po '.
Quali sono gli altri modi per gestire le impostazioni di configurazione su un modulo? Cosa è raccomandato? Sembra che spesso non ci sia un modo carino per configurare la configurazione a livello di modulo.
Ovviamente, evitando completamente la configurazione è di gran lunga il più preferibile, ed è generalmente preferibile utilizzare le classi, o passare l'argomento a una funzione. Ma a volte non si può evitare di avere impostazioni di qualche tipo, e qualche volta ha davvero senso avere impostazioni globali a livello di modulo solo per comodità (per esempio, il sistema di template di Django - dovendo specificare il percorso di base per ogni modello sarebbe un incubo, sicuramente non buono codice DRY).
Personalmente, penso che il peggior modo di fare sia con un file di impostazioni come django. Ma +1 per menzionare ConfigParser. –
In realtà, probabilmente non ho pronunciato la mia domanda molto bene. Quando ho detto "impostazioni di configurazione per un modulo" intendevo all'interno di Python. Quindi, forse una domanda migliore: quando si importa un modulo, qual è il modo migliore per impostare lo stato/i parametri a livello di modulo in fase di esecuzione, all'interno di Python? Ad esempio, quando istanziate una classe, un modo pietonico comune per impostare lo stato a livello di classe è con i parametri della funzione __init__. Qual è la funzione __init__ per un modulo? – bryhoyt
E, più precisamente (dato che è facile inserire il codice runtime direttamente nel modulo, come una funzione __init__), come faccio a passare i parametri alla funzione "__init__" dei moduli? – bryhoyt