【Python】严格定义常量的方式

  • 时间:
  • 来源:互联网
  • 文章标签:

我们知道,常量的值不可改变。在Python中,如果想严格定义常量,可以通过类的方式实现。

首先创建一个文件constant.py,把下面代码贴进去:

import sys

class _const:
    # 自定义异常处理
    class ConstError(PermissionError):
        pass
    class ConstCaseError(ConstError):
        pass
    # 重写 __setattr__() 方法
    def __setattr__(self, name, value):
        if name in self.__dict__:  # 已包含该常量,不能二次赋值
            raise self.ConstError("Can't change const {0}".format(name))
        if not name.isupper():  # 所有的字母需要大写
            raise self.ConstCaseError("const name {0} is not all uppercase".format(name))
        self.__dict__[name] = value

# 将系统加载的模块列表中的 constant 替换为 _const() 实例
sys.modules[__name__] = _const()

新建立文件test.py,字节导入这个模块并使用:

import constant as C
C.PI = 3.14

注意:test.py中这里并没有类的实例化操作,即C=_const()。

这是因为我们在模块中写了 sys.modules[__name__] = _const() ,它让你在导入类的同时,就已经实例化了这个类。

本文链接http://www.taodudu.cc/news/show-83018.html