Форум сайта python.su
0
Приветствую.
Достался от ушедшего разработчика проект по наследству.
Не сильно большой и сложный, ну да не суть.
А суть вот в чем: в приложении среди прочего есть модуль settings в котором хранятся некоторые настройки по умолчанию (на самом деле пара основных параметров, скажем foo и bar).
Приложение при запуске читает из командной строки конфигурацию (через argparse)
parser.add_argument('--foo', action='store_true') parser.add_argument('--bar', action='store_true') parser.add_argument('--baz', action='store_true')
for name, val in parser.parse_args(sys.argv[1:])._get_kwargs(): setattr(sys.modules['settings'], name, val)
Офлайн
253
whowСкорее дело вкуса.
Как это реализовать правильно?
Отредактировано doza_and (Май 22, 2013 19:32:26)
Офлайн
0
А как же “не использовать глобальные переменные в нескольких модулях”*?
Ну и по второму пункту - ИДЕ то ругается. Или просто прописать туда все необходимые переменные. А при необходимости их изменить менять в нескольких местах сразу? (в настройках argparse, в модуле с собственно опциями и т.п.).
Мне видится тут одиночка (aka singleton), но я вообщем то нуб в программировании, использовал этот паттерн только в PHP когда то и не уверен как правильно это в пайтоне реализовать.
Офлайн
0
Хотя похоже это всетаки правильный способ.
единственное, что _get_kwargs() вроде как приватный метод, не комильфо его там использовать. но над этим наверно нада еще подумать, маловато опыта, что б сходу решение увидеть.
Офлайн
63
whowА кто говорит про глобальные настройки. Это могут быть атрибуты класса…
А как же “не использовать глобальные переменные в нескольких модулях”*?
Офлайн