一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python實現Const詳解

Python實現Const詳解

2020-05-20 09:55腳本之家 Python

這篇文章主要介紹了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的區別

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 | 99久久国产综合精品1尤物 | 欧美日日操 | 91po国产在线高清福利 | 天天色色色 | 茄子视频懂你更多apl | 日本指交 | 婷婷中文 | 好大好热| 男人猛激烈吃奶gif动态图 | 青草草在线观看 | 亚洲国产天堂综合一区 | 成人免费体验区福利云点播 | 滑进了柔佳火热紧夹的 | 按摩院已婚妇女中文字幕 | 短篇同学新婚h系列小说 | 99久久成人 | 午夜网 | 国产日本免费 | 深夜在线观看网站 | 免费一级欧美大片在线观看 | 国产精品日韩欧美在线 | 骚虎网站在线观看 | 国产精品对白刺激久久久 | 草草视频免费看 | 狠狠色综合久久久久尤物 | 久久综合中文字幕佐佐木希 | 九九99热| 高清视频在线观看+免费 | 69av美女| 亚洲国产欧美在线成人aaaa | gay勾搭直男com | 亚洲ss | 国产一区二区精品久 | 国产成人免费在线观看 | 欧美精品国产一区二区 | 亚洲精品片 | 成人小视频在线观看 | 舔逼| 午夜私人影院在线观看 视频 | 91久久国产视频 |