在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个以上的常量。
5 个回答
4
你有几个选择:
- 继续用你现在的方式,也就是用一个常量文件。
- 使用一个简单的文件,解析一次,然后把一个字典或类传来传去。
- 从数据库中查询。
从开销的角度来看,选项1和选项2差不多。至于你问的关于如何导入特定常量的问题,使用以下其中一种方式会简单得多:
import constants; some_func(constants.AWFUL)
from constants import *; some_func(AWFUL)
17
如果这些常量是和某个特定的类相关联,并且只在这个类内部使用,你还可以选择把它们专门定义为这个类的常量:
class Foo(object):
GOOD = 0
BAD = 1
WTF = -1
def __init__(self...
这样就可以使用了。
90
为什么不直接使用
import constants
def use_my_constants():
print constants.GOOD, constants.BAD, constants.AWFUL
来自Python的哲学:
命名空间是好的。让我们多用一些!
编辑:不过,当你引用的时候,应该加上出处并核对一下,因为正如其他人所指出的,应该是:
命名空间真是个好主意——让我们多用一些!
这次,我确实是从源头复制的: PEP 20 -- Python的哲学