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

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

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

服務器之家 - 腳本之家 - Python - Python中實現常量(Const)功能

Python中實現常量(Const)功能

2020-05-20 10:04腳本之家 Python

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

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99精品久久精品一区二区小说 | 黄动漫软件车车好快的车车 | www.久久99 | 国产亚洲精品九九久在线观看 | 91久久偷偷做嫩草影院免费看 | 国产欧美又粗又猛又爽老 | 国产剧情一区 | 午夜电影三级还珠格格 | 国产私人影院 | 成全动漫视频在线观看 | 午夜一级免费视频 | 男女男精品视频免费观看 | 草草在线视频 | 国内精品久久久久久中文字幕 | 日本大尺度激情做爰叫床 | 国产成人在线综合 | 免费国产成人高清视频网站 | 99精品国产久热在线观看66 | 无敌秦墨漫画免费阅读 | 国产福利不卡视频在免费 | yy111111影院理论大片 | 国产自在自线午夜精品之la | 国产一区二区视频免费 | 黑人好大好硬好深好爽想要h | 成人免费福利网站在线看 | 晓雪老师我要进你里面好爽 | 50度灰破解版v5.7.0 | 亚洲一成人毛片 | 美女视频91 | 美女天天色 | 好姑娘在线完整版视频 | 国产一区在线 | 韩国www| 国模孕妇季玥全部人体写真 | 国产在线视频第一页 | 逼中极品| 欧美三级小说 | 高中生喷水喷浆 | 国产午夜一区二区在线观看 | chinese壮直男gay老年人 | mm131亚洲精品久久 |