在Python类中初始化和使用常量的最佳方法是什么?

时间:2011-06-14 15:13:00

标签: python

以下是我如何声明常量并在不同的Python类中使用它们:

# project/constants.py
GOOD = 1
BAD = 2
AWFUL = 3

# project/question.py
from constants import AWFUL, BAD, GOOD

class Question:
    def __init__(self):
        ...

以上是存储和使用有价值的好方法吗?我意识到,经过一段时间后,常量文件会变得非常大,我可以明确地在任何给定文件中导入10个以上的常量。

4 个答案:

答案 0 :(得分:45)

为什么不使用

import constants

def use_my_constants():
    print constants.GOOD, constants.BAD, constants.AWFUL

来自python zen:

  

命名空间很好。让我们做更多的事情!

编辑:除了,当你引用时,你应该包括一个引用并检查它,因为正如其他人所指出的,它应该是:

  

命名空间是一个很好的主意 - 让我们做更多的事情!

这一次,我实际上是从源代码复制了它:PEP 20 -- The Zen of Python

答案 1 :(得分:7)

如果常量与特定类绑定并在该类中私有使用,使它们特定于该类,您也可以选择:

class Foo(object):
   GOOD = 0
   BAD = 1
   WTF = -1

   def __init__(self...

然后离开。

答案 2 :(得分:2)

您有几个选择:

  1. 使用常量文件
  2. 按照您现在的方式进行操作
  3. 使用平面文件并解析一次,传递字典/类
  4. 查询数据库
  5. 从开销的角度来看,1和2大致相同。至于关于导入特定常量的问题,使用以下约定之一要容易得多:

    • import constants; some_func(constants.AWFUL)
    • from constants import *; some_func(AWFUL)

答案 3 :(得分:1)

尝试查看以下链接(一个链接包含如何实现真实常量的活动状态的收据):

Importing a long list of constants to a Python file

Create constants using a "settings" module?

Can I prevent modifying an object in Python?