Python:导入模块时,建议使用什么方法设置模块的配置设置?
我见过人们使用猴子补丁来设置模块选项,例如: 导入mymodulePython:导入模块时,建议使用什么方法设置模块的配置设置?,python,Python,我见过人们使用猴子补丁来设置模块选项,例如: 导入mymodule mymodule.default_img=“/my/file.png” mymodule.view\u default\u img() 例如,Django在整个Django应用程序中都有settings.py,它总是让我有点恼火 管理模块配置设置的其他方法有哪些?推荐什么?似乎通常没有很好的方法来设置模块级配置 显然,完全避免配置是目前为止最可取的,而且通常最好使用类,或者将参数传递给函数。但有时你无法避免使用某种设置,有时仅仅
mymodule.default_img=“/my/file.png”
mymodule.view\u default\u img() 例如,Django在整个Django应用程序中都有settings.py,它总是让我有点恼火 管理模块配置设置的其他方法有哪些?推荐什么?似乎通常没有很好的方法来设置模块级配置 显然,完全避免配置是目前为止最可取的,而且通常最好使用类,或者将参数传递给函数。但有时你无法避免使用某种设置,有时仅仅为了方便而使用全局模块范围的设置确实有意义(例如,Django的模板系统——必须为每个模板指定基本路径将是一场噩梦,绝对不是好的干代码)。一个选项是模块。您可以将设置放在非python配置文件中,并让每个模块从中读取其设置。另一个选项是在每个模块中都有一个config方法,客户机代码也可以传递它的参数
# foo.py
setting1 = 0
setting2 = 'foo'
def configure(config1, config2):
global setting1, setting2
setting1 = config1
setting2 = config2
然后在导入模块中
import foo
foo.configure(42, 'bar')
就个人而言,我认为最好的方法是使用django这样的设置文件。就个人而言,我认为最糟糕的方法是使用django这样的设置文件。但是+1用于提到ConfigParser。实际上,我可能没有很好地回答我的问题。当我说“模块的配置设置”时,我的意思是在Python中。因此,也许有一个更好的问题:导入模块时,在Python中,在运行时设置模块级状态/参数的最佳方法是什么?例如,当您实例化一个类时,设置类级状态的一种常用python方法是使用init函数的参数。模块的init函数是什么?更重要的是(因为可以像init函数一样将运行时代码直接放在模块中),如何将参数传递给模块的“init”函数?@bryhoyt我认为您所描述的几乎是我介绍的三个选项中的第二个。