新建const.py:
#-*-coding:UTF-8-*-
#Filename: const.py
# 定義一個常量類實現常量的功能
# # 該類定義了一個方法__setattr()__,和一個異常ConstError, ConstError類繼承
# 自類TypeError. 通過調用類自帶的字典__dict__, 判斷定義的常量是否包含在字典
# 如果字典中包含此變量,將拋出異常,否則,給新創建的常量賦值。
# 最后兩行代碼的作用是把const類注冊到sys.modules這個全局字典中。
class _const:
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
import sys
sys.modules[__name__] = _const()
新建test.py:
#-*-coding:UTF-8-*-
import const
const.magic = 23
print const.magic
const.magic = 33
結果: