Otrzymałem projekt od programisty, który opuścił naszą firmę. Niezbyt skomplikowane, ale nie wygląda to bardzo ładnie. Oto pytanie: Aplikacja ma kilka modułów, a jedna to "ustawienia", które przechowuje pewną aplikację. opcje (nie wszystkie możliwe opcje, powiedzmy tylko dwie: foo
i bar
). Kiedy aplikacja jest uruchomiona odczytuje opcje z linii poleceń (za pomocą argparse):Jak przechowywać ustawienia aplikacji w modułach
parser.add_argument('--foo', action='store_true')
parser.add_argument('--bar', action='store_true')
parser.add_argument('--baz', action='store_true')
a następnie wykonuje on tę paskudną rzecz:
for name, val in parser.parse_args(sys.argv[1:])._get_kwargs():
setattr(sys.modules['settings'], name, val)
First: Myślę, że jest brudny, nie pythonic siekać . Po drugie, używanie takiego kodu jest po prostu niewygodne, ponieważ gdy potrzebuję użyć settings.baz
, IDE skarży się, że nie istnieje. Intencją tego hacka jest uczynienie opcji analizowanych z wiersza poleceń dostępnymi we wszystkich modułach używanych dalej w aplikacji.
Myślę o czymś podobnym do singleton, ale użyłem go tylko raz w PHP i nie wiem, czy to poprawne rozwiązanie w Pythonie. A nawet jeśli tak, czy ktoś może pokazać przykład?
Jestem noobem w pytonie i na SO, proszę bądź dla mnie miły :) Dzięki.
p.s. Przepraszam za ewentualne błędy w moim English
To jest duplikat. Odpowiedź na to pytanie została podana w tym temacie: http://stackoverflow.com/questions/15992387/python-settings-file –
To nie jest duplikat - drugi dotyczy plików konfiguracyjnych, ten dotyczy konfiguracji modułu uruchomieniowego. –