Widziałem ludzi używa małpa-łatanie ustawić opcje na module, na przykład:Python: Jaki jest zalecany sposób ustawienia ustawień modułu podczas jego importowania?
import mymodule
mymodule.default_img = "/my/file.png"
mymodule .view_default_img()
I Django, na przykład, ma settings.py dla całej aplikacji Django, i zawsze mnie to trochę tnie.
Jakie są inne sposoby zarządzania ustawieniami konfiguracyjnymi w module? Co jest zalecane? Wygląda na to, że często nie ma dobrego sposobu na skonfigurowanie konfiguracji na poziomie modułów.
Oczywiście całkowicie unikanie konfiguracji jest zdecydowanie najkorzystniejsze i zwykle lepiej jest używać klas lub przekazywać argumenty do funkcji. Czasem jednak nie można uniknąć pewnych ustawień, a czasami naprawdę ma sens mieć globalne ustawienia dla całego modułu tylko dla wygody (na przykład system szablonów Django - określenie ścieżki bazowej dla każdego szablonu byłoby koszmar, zdecydowanie nie dobry kod DRY).
Osobiście uważam, że najgorszym sposobem jest plik ustawień, taki jak django. Ale +1 za wspominanie o ConfigParser. –
Właściwie, nie powiedziałem zbyt dobrze mojego pytania. Kiedy powiedziałem "ustawienia konfiguracji dla modułu" miałem na myśli w Pythonie. Być może lepsze pytanie: kiedy importujesz moduł, jaki jest najlepszy sposób na ustawienie stanu/parametrów na poziomie modułu w środowisku wykonawczym, w Pythonie? Na przykład, kiedy tworzysz instancję klasy, popularnym pythonic sposobem ustawiania stanu klasy jest parametr z funkcją __init__. Jaka jest funkcja __init__ dla modułu? – bryhoyt
Co więcej, ponieważ łatwo jest umieścić kod runtime bezpośrednio w module, np. Funkcję __init__, w jaki sposób przekazać parametry do modułów "__init__"? – bryhoyt