python常量与变量

python常量与变量


python中的常量是一旦绑定,就不能更改的量。

python中定义常量需要通过对象的方法来创建。


#这里主要定义了常量的功能,

# 该类定义了一个方法__setattr()__,和一个异常ConstError, ConstError类继承 
# 自类TypeError. 通过调用类自带的字典__dict__, 判断定义的常量是否包含在字典 
# 中。如果字典中包含此变量,将抛出异常,否则,给新创建的常量赋值。 
# 最后两行代码的作用是把const类注册到sys.modules这个全局字典中。

const.py:

class _const(object):
    class ConstError(TypeError):pass

    def __setattr__(self, name, value):
        if self.__dict__.has_key(name):
            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()


changliang.py:

import const
const.value=5
print const.value

输出5

执行如下代码:

import const
const.value=5
print const.value
const.value=6;
print const.value

则编译器会报错:

Traceback (most recent call last):
  File "D:/PycharmProjects/firstProject/ChapterTwo/changliang.py", line 4, in
    const.value=6;
  File "D:\PycharmProjects\firstProject\ChapterTwo\const.py", line 6, in __setattr__
    raise self.ConstError,"Can't rebind const(%s)" % name
const.ConstError: Can't rebind const(value)



python的变量定义

a=6
print a
a=7
print a



你可能感兴趣的:(python学习)