python 编写高质量代码之将常量集中一个文件
# 建议将常量集中于一个文件 我认为这是一个意思表达错了,正确的是将常量统一管理才对
实现方式
1. 命名风格来,如xx开头代表是常量等,不好的地方是没按规则来就会出莫名的错误。 2. 通过自定义类来实现常量功能。
通过类来实现常量功能
原文示例:
class _const:
class ConstError(TypeError): pass
class ConstCaseError(ConstError): pass
def __setattr__(self, name, value):
if self.__dict__.has_key(name):
raise self.ConstError, "Can't change const.%s" % name
if not name.isupper():
raise self.ConstCaseError, \
'const name "%s" is not all uppercase' % name
self.__dict__[name] = value
import sys
sys.modules[__name__]=_const()
import const
const.MY_CONSTANT = 1
const.MY_SECOND_CONSTANT = 2
const.MY_THIRD_CONSTANT = 'a'
const.MY_FORTH_CONSTANT = 'b'
在这个示例中:作者运用了sys.modules, import 的使用,但我并不认为这种手法好, 我比较喜欢将二分开, _const.py,const.py, 这样的好处是分离相关实现
--- _const.py
class CONST:
.....
--- const.py
from _const import CONST
MAN = CONST()
MAN.MONEY = 100
WOMAN = CONST()
WOMAN.MONEY = 200