欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中實現(xiàn)常量(Const)功能

 更新時間:2015年01月28日 16:40:44   投稿:junjie  
這篇文章主要介紹了Python中實現(xiàn)常量(Const)功能,python語言本身沒有提供const,本文使用一個類來實現(xiàn)常量定義功能,并介紹了使用方法,需要的朋友可以參考下

python語言本身沒有提供const,但實際開發(fā)中經(jīng)常會遇到需要使用const的情形,由于語言本身沒有這種支出,因此需要使用一些技巧來實現(xiàn)這一功能

定義const類如下

復(fù)制代碼 代碼如下:

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向系統(tǒng)字典中注入了一個Const對象從而實現(xiàn)了在執(zhí)行import const時實際獲取了一個Const實例的功能,sys.module在文檔中的描述如下
復(fù)制代碼 代碼如下:

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()這條語句將系統(tǒng)已加載的模塊列表中的const替換為了Const(),即一個Const實例

這樣,整個工程需要使用的常量都應(yīng)該定義在一個文件中,如下

復(fù)制代碼 代碼如下:

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的區(qū)別

1.import module只是將module的name加入到目標(biāo)文件的局部字典中,不需要對module進(jìn)行解釋
2.from module import xxx需要將module解釋后加載至內(nèi)存中,再將相應(yīng)部分加入目標(biāo)文件的局部字典中
3.python模塊中的代碼僅在首次被import時被執(zhí)行一次

from project.utils import const時,發(fā)生了sys.modules[name] = Const(),此時const模塊已經(jīng)加載進(jìn)入內(nèi)存,系統(tǒng)字典中也已經(jīng)有了Const對象,隨后既可以使用Const實例了

在其他文件中需要使用常量值時,以如下方式調(diào)用

復(fù)制代碼 代碼如下:

from project.apps.project_consts import const

print const.MAIL_PROTO_IMAP

相關(guān)文章

  • VSCode中autopep8無法運(yùn)行問題解決方案(提示Error: Command failed,usage)

    VSCode中autopep8無法運(yùn)行問題解決方案(提示Error: Command failed,usage)

    這篇文章主要介紹了VSCode中autopep8無法運(yùn)行問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python利用os模塊實現(xiàn)自動刪除磁盤文件

    Python利用os模塊實現(xiàn)自動刪除磁盤文件

    你們一定想不到os模塊還可以這樣玩,本文就將利用Python中的os模塊實現(xiàn)自動刪除磁盤文件功能,文中的示例代碼講解詳細(xì),感興趣的可以嘗試一下
    2022-11-11
  • 用Python進(jìn)行行為驅(qū)動開發(fā)的入門教程

    用Python進(jìn)行行為驅(qū)動開發(fā)的入門教程

    這篇文章主要介紹了用Python進(jìn)行行為驅(qū)動開發(fā)的入門教程,本文也對BDD的概念做了詳細(xì)的解釋,需要的朋友可以參考下
    2015-04-04
  • python中導(dǎo)入 train_test_split提示錯誤的解決

    python中導(dǎo)入 train_test_split提示錯誤的解決

    這篇文章主要介紹了python中導(dǎo)入 train_test_split提示錯誤的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • VsCode中超好用的8個python插件推薦

    VsCode中超好用的8個python插件推薦

    本人日常使用vscode進(jìn)行開發(fā),并且比較喜歡折騰vscode,會到處找這一些好玩的插件,于是越攢越多,下面這篇文章主要給大家介紹了關(guān)于VsCode中超好用的8個python擴(kuò)展插件的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • 淺析form標(biāo)簽中的GET和POST提交方式區(qū)別

    淺析form標(biāo)簽中的GET和POST提交方式區(qū)別

    在HTML中,form表單的作用是收集標(biāo)簽中的內(nèi)容<form>...</form> 中間可以由訪問者添加類似于文本,選擇,或者一些控制模塊等等.然后這些內(nèi)容將會被送到服務(wù)端
    2021-09-09
  • python快速查找算法應(yīng)用實例

    python快速查找算法應(yīng)用實例

    這篇文章主要介紹了python快速查找算法,是一個比較經(jīng)典的算法應(yīng)用,有一定的借鑒價值,需要的朋友可以參考下
    2014-09-09
  • 用Python寫漏洞驗證腳本的代碼

    用Python寫漏洞驗證腳本的代碼

    這篇文章主要介紹了用Python寫漏洞驗證腳本,本文給大家分享完整實例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • Python實現(xiàn)PS圖像抽象畫風(fēng)效果的方法

    Python實現(xiàn)PS圖像抽象畫風(fēng)效果的方法

    這篇文章主要介紹了Python實現(xiàn)PS圖像抽象畫風(fēng)效果的方法,涉及Python基于skimage模塊進(jìn)行圖像處理的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • pycharm設(shè)置注釋顏色的方法

    pycharm設(shè)置注釋顏色的方法

    今天小編就為大家分享一篇pycharm設(shè)置注釋顏色的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05

最新評論