当前位置: 首页 > 编程笔记 >

Python中实现常量(Const)功能

姜杜吟
2023-03-14
本文向大家介绍Python中实现常量(Const)功能,包括了Python中实现常量(Const)功能的使用技巧和注意事项,需要的朋友参考一下

python语言本身没有提供const,但实际开发中经常会遇到需要使用const的情形,由于语言本身没有这种支出,因此需要使用一些技巧来实现这一功能

定义const类如下


import sys

class Const(object):     class ConstError(TypeException): pass     def __setattr__(self, key, value):         if self.__dict__.has_key(key):             raise self.ConstError, "Changing const.%s" % key         else:             self.__dict__[key] = value

    def __getattr__(self, key):         if self.__dict__.has_key(key):             return self.key         else:             return None

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' const.MAIL_PROTO_GMAIL = 'gmail' const.MAIL_PROTO_HOTMAIL = 'hotmail' const.MAIL_PROTO_EAS = 'eas' const.MAIL_PROTO_EWS = 'ews'


这儿首先需要说明python中import module和from module import的区别

1.import module只是将module的name加入到目标文件的局部字典中,不需要对module进行解释
2.from module import xxx需要将module解释后加载至内存中,再将相应部分加入目标文件的局部字典中
3.python模块中的代码仅在首次被import时被执行一次

from project.utils import const时,发生了sys.modules[name] = Const(),此时const模块已经加载进入内存系统字典中也已经有了Const对象,随后既可以使用Const实例了

在其他文件中需要使用常量值时,以如下方式调用


from project.apps.project_consts import const

print const.MAIL_PROTO_IMAP

 类似资料:
  • 本文向大家介绍python实现QQ批量登录功能,包括了python实现QQ批量登录功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现QQ批量登录功能的具体代码,供大家参考,具体内容如下 小编收集整理的第一份代码:python3.6批量登陆QQ 第二份代码:使用Python进行QQ批量登录 感谢网友们的分享。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大

  • 着色器语言和C语言、javascript语言一样可以通过关键字const声明一个常量。 着色器语言和其它语言一样,声明一个变量,可以重新赋值,如果通过关键字const声明一个常量,顾名思义是常量,在代码中是不可以更改的。 // 着色器语言定义一个整形常量 const int count = 10; // 定义一个浮点数常量10.0 const float count = 10.0; // 定义一个

  • 本文向大家介绍Openlayers实现测量功能,包括了Openlayers实现测量功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Openlayers实现测量的具体代码,供大家参考,具体内容如下 由于公司项目需要使用到openlayers,就开始学习了openlayers,其中有一个需求需要用到测量功能,就参考《WebGisOpenlayers全面解析》写了一个小demo,话不多

  • 我们一直强调,最低权限原则(principle of least privilege)是良好软件工程的最基本原则之一。下面介绍这个原则如何应用于对象。 有些对象需要修改,有些不需要。程序员可以用关键字const指定对象不能修改,且修改时会产生语法错误。例如: const Time noon(12,0,0); 声明 Time 类对象 noon 为 const,并将其初始化为中午12时。 软件工程视点

  • 本文向大家介绍python实现计算器功能,包括了python实现计算器功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python计算器的具体代码,供大家参考,具体内容如下 主要用到的工具是Python中的Tkinter库 比较简单 直接上图形界面和代码 引用Tkinter库 建立主窗口对象 建立标签框以及标签(将运算字符串显示在上面) 设置全局变量字符串s,按一个按钮,将按钮对

  • 本文向大家介绍Python实现AI换脸功能,包括了Python实现AI换脸功能的使用技巧和注意事项,需要的朋友参考一下 需要用到的接口: 获取人脸信息的接口:https://api-cn.faceplusplus.com/facepp/v3/detect 实现换脸的接口 :https://api-cn.faceplusplus.com/imagepp/v1/mergeface 代码分为三步 代码:

  • 本文向大家介绍Python ATM功能实现代码实例,包括了Python ATM功能实现代码实例的使用技巧和注意事项,需要的朋友参考一下 编写ATM程序实现下述功能,数据来源于文件db.txt 1、充值功能:用户输入充值钱数,db.txt中该账号钱数完成修改 2、转账功能:用户A向用户B转账1000元,db.txt中完成用户A账号减钱,用户B账号加钱 3、提现功能:用户输入提现金额,db.txt中该

  • 本文向大家介绍python实现邮件发送功能,包括了python实现邮件发送功能的使用技巧和注意事项,需要的朋友参考一下 什么是POP3、SMTP和MAP? POP3是Post Office Protocol 3的简称,即邮局协议的第三个版本,他是规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的协议。它是因特网电子邮件的第一个离线协议的标准。POP3允许用户从服务器上把邮件存储