Python中常量的另一种实现

虽然在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做出这么一点微小的工作,很惭愧。

    原文作者:都说名字长点帅
    原文地址: https://segmentfault.com/a/1190000004098963
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞