【问题标题】:Where to put constants in pythonpython中常量放在哪里
【发布时间】:2017-11-14 19:49:30
【问题描述】:

我对 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'放在哪里?在另一个模块中再导入呢?还是把它作为一个全局变量?

【问题讨论】:

标签: python


【解决方案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

【讨论】:

    最近更新 更多