我对python非常陌生,想了解定义某些内容的pythonic方法是什么。我有以下课程:
class ConfigBuilder:
def add_param(self, key, value):
#...
def build():
#...
现在我想在另一个模块中使用它,如下所示:
some_val = #...
config_builder builder = ConfigBuilder()
builder.add_param('PROJECT_RELATED_KEY', some_val)
放置此'PROJECT_RELATED_KEY'
的位置?在另一个模块然后导入它?或者把它作为一个全局变量?
答案 0 :(得分:1)
同意对于应存储设置的地方没有绝对约定。在项目布局方面有很多灵活性。以下是我在决定放置自己设置的位置时可能会考虑的一些可能性。
如果您的项目可能包含一些您在版本控制中不需要的敏感参数,则可以将它们放入您的环境中,然后使用环境变量访问它们。
import os
print os.environ['HOME']
如果它们根本不敏感,一种可能的方法是做Django的工作并创建一个settings.py文件。像这样的东西
# myproject/settings.py
SOME_VALUE = 'SomeConfigurableValue'
FOO = 'bar'
PROJECT_RELATED_KEY = 'bestkeyever'
# myproject/builder.py
from myproject.settings import SOME_VALUE
print(SOME_VALUE)
您甚至可以将项目设置为包,然后执行
from . import settings
print(settings.SOME_VALUE)
有关将项目设置为包的详细信息,请参阅: How to fix "Attempted relative import in non-package" even with __init__.py