麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Python > 正文

Python實現Const詳解

2020-02-23 06:20:54
字體:
來源:轉載
供稿:網友

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的區別

import module只是將module的name加入到目標文件的局部字典中,不需要對module進行解釋
from module import xxx需要將module解釋后加載至內存中,再將相應部分加入目標文件的局部字典中
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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久久久久九九九九 | 91精品国产乱码久久桃 | 88xx成人精品视频 | 成人福利免费在线观看 | 久久久久久麻豆 | 草草视频免费观看 | 日韩视频一区二区在线观看 | 欧美人的天堂一区二区三区 | 成人午夜在线播放 | 久久国产精品区 | 久久不射电影网 | 国产亚洲黑人性受xxxx精品 | 美国一级黄色毛片 | 看免费黄色一级片 | 国产激情视频在线 | 爱操成人网| 永久免费毛片 | 成人在线免费观看网址 | 欧美特一级 | 国产乱淫av| 国产精品久久久久久238 | 斗罗破苍穹在线观看免费完整观看 | 午夜偷拍视频 | 最新av网址在线观看 | 日本不卡一区二区三区在线 | h色视频网站| 久国久产久精永久网页 | 特级毛片全部免费播放器 | 日本aaaa片毛片免费观看视频 | 久久精品美乳 | 欧美黄 片免费观看 | 国产精品久久久久久久不卡 | 日韩午夜一区二区三区 | 369看片你懂的小视频在线观看 | av在线播放电影 | 日本aⅴ在线 | 久久毛片免费观看 | 一区二区三区日韩电影 | 精品一区二区三区日本 | 国产一区国产二区在线观看 | 国产成年人小视频 |