1. 程式人生 > >006_002 Python 定義常量 可以新增新的屬性,但是不能修改刪除已有的屬性

006_002 Python 定義常量 可以新增新的屬性,但是不能修改刪除已有的屬性

程式碼如下:

#encoding=utf-8

print '中國'

#定義常量 可以新增新的屬性,但是不能修改刪除已有的屬性 
#核心在於不能刪除 不能修改
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


const=_const()
const.magic = 23

# Exception
del const.magic

# Exception 
const.magic=24

列印結果如下:

中國
Traceback (most recent call last):
  File "F:\workspace\StudyPy\src\basic\study006_002.py", line 23, in <module>
    del const.magic
  File "F:\workspace\StudyPy\src\basic\study006_002.py", line 15, in __delattr__
    raise self.ConstError, "Can't unbind const(%s)" % name
__main__.ConstError: Can't unbind const(magic)