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

Python實(shí)現(xiàn)Const詳解

 更新時(shí)間:2015年01月27日 16:56:13   投稿:hebedich  
這篇文章主要介紹了Python實(shí)現(xiàn)Const的方法的相關(guān)資料,需要的朋友可以參考下

python語(yǔ)言本身沒(méi)有提供const,但實(shí)際開(kāi)發(fā)中經(jīng)常會(huì)遇到需要使用const的情形,由于語(yǔ)言本身沒(méi)有這種支出,因此需要使用一些技巧來(lái)實(shí)現(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]可以獲取一個(gè)模塊對(duì)象,并可以通過(guò)該對(duì)象獲取模塊的屬性,這兒使用了sys.modules向系統(tǒng)字典中注入了一個(gè)Const對(duì)象從而實(shí)現(xiàn)了在執(zhí)行import const時(shí)實(shí)際獲取了一個(gè)Const實(shí)例的功能,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()這條語(yǔ)句將系統(tǒng)已加載的模塊列表中的const替換為了Const(),即一個(gè)Const實(shí)例

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

復(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'

這兒首先需要說(shuō)明python中import module和from module import的區(qū)別

import module只是將module的name加入到目標(biāo)文件的局部字典中,不需要對(duì)module進(jìn)行解釋
from module import xxx需要將module解釋后加載至內(nèi)存中,再將相應(yīng)部分加入目標(biāo)文件的局部字典中
python模塊中的代碼僅在首次被import時(shí)被執(zhí)行一次
from project.utils import const時(shí),發(fā)生了sys.modules[name] = Const(),此時(shí)const模塊已經(jīng)加載進(jìn)入內(nèi)存,系統(tǒng)字典中也已經(jīng)有了Const對(duì)象,隨后既可以使用Const實(shí)例了

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

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

from project.apps.project_consts import const
print const.MAIL_PROTO_IMAP

相關(guān)文章

  • Python FFT合成波形的實(shí)例

    Python FFT合成波形的實(shí)例

    今天小編大家分享一篇Python FFT合成波形的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Python實(shí)現(xiàn)TXT數(shù)據(jù)轉(zhuǎn)三維矩陣

    Python實(shí)現(xiàn)TXT數(shù)據(jù)轉(zhuǎn)三維矩陣

    在數(shù)據(jù)處理和分析中,將文本文件中的數(shù)據(jù)轉(zhuǎn)換為三維矩陣是一個(gè)常見(jiàn)的任務(wù),本文將詳細(xì)介紹如何使用Python實(shí)現(xiàn)這一任務(wù),感興趣的小伙伴可以了解下
    2024-01-01
  • Python讀寫ini文件的方法

    Python讀寫ini文件的方法

    這篇文章主要介紹了Python讀寫ini文件的方法,實(shí)例分析了Python針對(duì)ini配置文件的讀寫及修改等操作技巧,需要的朋友可以參考下
    2015-05-05
  • python使用Tesseract庫(kù)識(shí)別驗(yàn)證

    python使用Tesseract庫(kù)識(shí)別驗(yàn)證

    這篇文章主要為大家詳細(xì)介紹了python使用Tesseract庫(kù)識(shí)別驗(yàn)證,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 詳解Python中enumerate函數(shù)的使用

    詳解Python中enumerate函數(shù)的使用

    Python?的?enumerate()?函數(shù)就像是一個(gè)神秘的黑箱,它具有非常有用的高級(jí)用法。本文就來(lái)為大家詳細(xì)講一下它的使用,需要的可以參考一下
    2022-08-08
  • python中的插值 scipy-interp的實(shí)現(xiàn)代碼

    python中的插值 scipy-interp的實(shí)現(xiàn)代碼

    這篇文章主要介紹了python中的插值 scipy-interp的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2018-07-07
  • 分享Pandas庫(kù)中的一些寶藏函數(shù)transform()

    分享Pandas庫(kù)中的一些寶藏函數(shù)transform()

    Pandas具有很多強(qiáng)大的功能,transform就是其中之一,利用它可以高效地匯總數(shù)據(jù)且不改變數(shù)據(jù)行數(shù),transform是一種什么數(shù)據(jù)操作?如果熟悉SQL的窗口函數(shù),就非常容易理解了
    2021-09-09
  • python自動(dòng)化實(shí)現(xiàn)的簡(jiǎn)單使用

    python自動(dòng)化實(shí)現(xiàn)的簡(jiǎn)單使用

    本文主要介紹了python自動(dòng)化實(shí)現(xiàn)的簡(jiǎn)單使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Pandas 重塑(stack)和軸向旋轉(zhuǎn)(pivot)的實(shí)現(xiàn)

    Pandas 重塑(stack)和軸向旋轉(zhuǎn)(pivot)的實(shí)現(xiàn)

    這篇文章主要介紹了Pandas 重塑(stack)和軸向旋轉(zhuǎn)(pivot)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python上下文管理器和with塊詳解

    Python上下文管理器和with塊詳解

    這篇文章主要為大家詳細(xì)介紹了Python上下文管理器和with塊的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09

最新評(píng)論