虽然在python中定义常量看起来有点违背python的动态性,但是在teamwork当中,rule is rule,常量作为一种合作的契约,还是很有必要的。
回到常量本身,常量应该是一种明确并且一旦初始化便不可更改的值,或作为协议的实现,或作为契约的存在。
网络上关于实现python的const,基本使用python的__getattr__,__setattr__来实现的,今天给大家介绍一种更简便实现常量的方法,它就是__slots__。
#const.py
import sys
class Const(object):
__slots__ = ('STATUS_OK', 'STATUS_TIMOUT', 'STATUS_ERROR')
STATUS_OK = 1000
STATUS_TIMOUT = 1001
STATUS_ERROR = 1005
sys.modules[__name__] = Const()
接下来就可以看看运行效果了!
>>> import const
>>> print const.STATUS_OK
1000
>>> const.STATUS_OK=1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Const' object attribute 'STATUS_OK' is read-only
>>>
ps:注册这么久,只为sf做出这么一点微小的工作,很惭愧。