小编use*_*235的帖子

如何跨模块存储应用程序设置

我收到了一位离开我们公司的开发人员的项目.不太复杂,但看起来不太好.所以这里有一个问题:应用程序有一些模块,一个是存储某些应用程序的"设置".选项(不是所有可能的选项,简单地说两个:foobar).启动应用程序时,它从命令行读取选项(使用argparse):

parser.add_argument('--foo', action='store_true')
parser.add_argument('--bar', action='store_true')
parser.add_argument('--baz', action='store_true')
Run Code Online (Sandbox Code Playgroud)

然后它执行这个令人讨厌的事情:

for name, val in parser.parse_args(sys.argv[1:])._get_kwargs():
    setattr(sys.modules['settings'], name, val)
Run Code Online (Sandbox Code Playgroud)

第一:我认为这是肮脏的,非pythonic黑客.第二,使用这样的代码简直不方便,因为当我需要使用时settings.baz,IDE会抱怨它不存在.此hack的目的是使命令行解析的选项在应用程序中进一步使用的所有模块中可用.

我正在考虑像singleton模式这样的东西,但我只在PHP中使用过一次,并且不知道python中是否有这个正确的解决方案.即使是这样,有人可以举例吗?

我是python中的菜鸟,所以请对我友好:)谢谢.

ps我很抱歉我的英语可能出错

python app-config global-variables

8
推荐指数
1
解决办法
7096
查看次数

标签 统计

app-config ×1

global-variables ×1

python ×1