zoukankan      html  css  js  c++  java
  • cookbook 6.2 定义常量

    任务:

    需要定义一些模块级别的变量(比如命名的常量),而且客户代码无法将其重新绑定;

    解决方案:

    #coding = utf-8
    class _const(object):
        class ConstError(TypeError): pass
        def __setattr__(self,name,value):
            if name in self.__dict__:
                raise self.ConstError,"Can't rebind const(%s)" % name
            self.__dict__[name] = value
        def __delattr__(self,name):
            if name in self.__dict__:
                raise self.ConstError,"Can't unbind const(%s)" % name
            raise NameError,name
        
    import sys
    sys.modules[__name__] = _const()

    使用方法:

    1、将以上代码保存为const.py,然后将该文件的目录添加到sys.path目录下;

    2、然后运行const.py

    3、在python shell中输入:

      import const

      #测试代码

      const.magic = 23

      备注:现在任何客户代码都可以导入const,并将const模块的一个属性绑定一次,但仅能绑定一次;

               一旦某属性已经被绑定,程序无法将其重新绑定或者解除绑定

                  const.magic = 99  #抛出const.ConstError

         del const.magic    #抛出const.ConstError

  • 相关阅读:
    学习笔记2-查看目录文件
    学习笔记1-基本信息及相关目录
    【图论】二分图最大匹配
    【图论】Dinic算法
    【图论】最小割
    【数据结构】左偏树
    【数学】欧拉定理
    【数据结构】ST表
    【数学】博弈模型
    【字符串】后缀数组
  • 原文地址:https://www.cnblogs.com/LittleRedPoint/p/4003299.html
Copyright © 2011-2022 走看看