在python中放置常量的位置

时间:2017-11-14 19:49:30

标签: python

我对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'的位置?在另一个模块然后导入它?或者把它作为一个全局变量?

1 个答案:

答案 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