aaa*_*210 21 python configuration design-patterns
我有一个应用程序,它包含一个基础应用程序,可以引入多个模块.基础应用程序将参数文件读入配置哈希,我想在所有模块中共享它.
目前,我将"父"对象传递给模块,然后这些模块正在执行self.parent.config之类的操作来获取配置.
但是,由于模块层次结构有几个层次,我发现自己做的事情就像self.parent.parent.config,它开始看起来很糟糕.
在应用程序及其模块中共享配置对象有哪些更好的模式?我正在考虑有一个'config'模块,它基本上创建一个全局配置变量,可以由基础应用程序设置,然后由其他模块导入和访问,但我不确定是否使用像这样的全局变量对其他原因.
我是Python的新手,所以很好=)
nin*_*cko 15
你可以:
import config
Run Code Online (Sandbox Code Playgroud)
并有一个全局配置模块
摘自我的评论:
您可以随时为奇怪的情况添加特殊规则oddValue if isOddSituation() else config.normalValue.
如果您希望配置模块具有分层可子类化(如我的其他答案所述),那么您可以将配置表示为类,或者您可以使用该copy模块并进行浅层复制并对其进行修改,或者您可以使用"配置"字典",例如:
import config as baseConfig
config = dict(baseConfig, overriddenValue=etc)
Run Code Online (Sandbox Code Playgroud)
你所在的范围并不重要.
回答老问题:
只需按照@Reed Copsey here 的建议使用依赖项注入。例如
class MyClass:
def __init__(myConfig):
self.myConfig = myConfig
...
def foo():
self.myConfig.getConfig(key)
...
self.myConfig.setConfig(key,val)
...
...
# myConfig is your configuration management Module/Class
obj = SomeClass(myConfig)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11590 次 |
| 最近记录: |