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

  • 相关阅读:
    [Gamma阶段]展示博客
    [Gamma阶段]测试报告
    软工实践个人总结
    小组最终答辩
    第08组 Beta版本演示
    第08组 Beta冲刺(5/5)
    第08组 Beta冲刺(4/5)
    第08组 Beta冲刺(2/5)
    第08组 Beta冲刺(3/5)
    第08组 Beta冲刺(1/5)
  • 原文地址:https://www.cnblogs.com/LittleRedPoint/p/4003299.html
Copyright © 2011-2022 走看看