Python中实现常量(Const)功能
python语言本身没有提供const,但实际开发中经常会遇到需要使用const的情形,由于语言本身没有这种支出,因此需要使用一些技巧来实现这一功能 定义const类如下 复制代码 代码如下: import sys class Const(object): def __getattr__(self,key): sys.modules[__name__] = Const() 使用sys.modules[name]可以获取一个模块对象,并可以通过该对象获取模块的属性,这儿使用了sys.modules向系统字典中注入了一个Const对象从而实现了在执行import const时实际获取了一个Const实例的功能,sys.module在文档中的描述如下 复制代码 代码如下: sys.modules This is a dictionary that maps module names to modules which have already been loaded. This can be manipulated to force reloading of modules and other tricks. Note that removing a module from this dictionary is not the same as calling reload() on the corresponding module object. sys.modules[name] = Const()这条语句将系统已加载的模块列表中的const替换为了Const(),即一个Const实例 这样,整个工程需要使用的常量都应该定义在一个文件中,如下 复制代码 代码如下: from project.utils import const const.MAIL_PROTO_IMAP = 'imap' 这儿首先需要说明python中import module和from module import的区别 1.import module只是将module的name加入到目标文件的局部字典中,不需要对module进行解释 from project.utils import const时,发生了sys.modules[name] = Const(),此时const模块已经加载进入内存,系统字典中也已经有了Const对象,随后既可以使用Const实例了 在其他文件中需要使用常量值时,以如下方式调用 复制代码 代码如下: from project.apps.project_consts import const print const.MAIL_PROTO_IMAP (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |