i 訪問字典的元素使用dobj.get(『key』, somethingelse),如果對應key值元素不存在,你將會得到somethingelse值,例如「not found」
不要使用dobj[『key』],因為如果key對應元素不存在,則會產生keyerror異常,這樣必須使用try…except來封裝
ii 名字空間中的屬性可以通過字典dict來訪問
setattr負責處理屬性賦值,其內進行賦值時要使用self.dict[attr] = value以防止遞迴
iii sys.modules是乙個字典,它包含了從python開始執行起,被匯入的所有模組。鍵字就是模組名,鍵值就是模組物件。請注意除了你的程式匯入的模組外還有其它模組。python在啟動時預先裝入了一些模組,如果你在乙個python ide環境下,sys.modules包含了你在ide中執行的所有程式所匯入的所有模組
定義
class
_const
(object):
class
consterror
(typeerror):
pass
def__setattr__
(self, name, value):
if self.__dict__.has_key(name):
raise self.consterror, "can't rebind const(%s)" % name
self.__dict__[name] = value
def__delattr__
(self, name):
if name in self.__dict__:
raise self.consterror, "can't unbind const(%s)" % name
raise nameerror, name
import sys
sys.modules[__name__] = _const()
使用
import const
const.value = somevalue
const.value = newvalue # 產生異常const.consterror
技巧
1) 使用setattr來控制重新繫結
2) sys.modules[『name』]得到的是模組物件,通過模組物件可以訪問其模組屬性;而python不會進行嚴格的型別檢測,所以直接將乙個_const類物件加入sys.modules字典,而name的值為對應模組const的名字』const』,通過sys.modules[name] = _const()用類物件替換模組物件,將對應的名字空間加以限制
當使用import const時,會發生sys.modules[『const』] = _const();而訪問const.attrvalue時會發生sys.modules[『const』].attrvalue,即_const().attrvalue
python語言常量 Python 定義常量
python python開發 python語言 python 定義常量 常量在編寫程式的時候,一旦設定就不能再進行變動,常量一種約定俗成的方式,所有字母大寫並用下劃線分隔單詞的方式 如max value,out time等 但是python沒有提供設定常量用法,需要自己自定義類實現常量功能。自定義...
python定義常量
coding utf 8 filename const.py class const class consterror typeerror pass def setattr self,name,value if self.dict has key name raise self.consterror...
python定義常量
max client 100max connection 1000 connection timeout 600import sys 該類定義了乙個方法 setattr 和乙個異常consterror,consterror類繼承 自類typeerror.通過呼叫類自帶的字典 dict 判斷定義的常量...