python中將字典改造為對象的方法
python中將字典改造為對象
在實際項目中,當(dāng)使用json模塊加載一個深度很深的字典類型的json文件時,使用字典的訪問方式,將會出現(xiàn)很多中括號,即不直觀也不美觀,可以將這個字典轉(zhuǎn)化為對象,使得可以用.的方式訪問。
代碼如下:
class Dict2Obj(dict):
def __getattr__(self, key):
print('getattr is called')
if key not in self:
return None
else:
value = self[key]
if isinstance(value,dict):
value = Dict2Obj(value)
return value
dic = {
'zone':{
'city':'shenzhen',
'location':'sx tech building'
},
'code':{
'frontend':'vue',
'backend':'python'
}
}
dic2obj = Dict2Obj(dic)
print(dic2obj.zone.city)輸出:
getattr is called
getattr is called
shenzhen
原理很簡單,就是重寫__getattr__方法,關(guān)于__getattr__的介紹,可以參考之前的文章python getattribute 、getattr、setattr 詳解。
當(dāng)一個對象通過’.'來訪問一個屬性時,如果報錯,將會轉(zhuǎn)到__getattr__做進一步處理,此時就可以將該key對應(yīng)的value返回,當(dāng)然如果value仍然是一個字典,則需要將它繼續(xù)轉(zhuǎn)化為一個Dict2Obj對象。
當(dāng)訪問不存在的key時,和字典一樣,會彈出異常,為了避免這種情況發(fā)生,類似字典,可以使用get()訪問。
到此這篇關(guān)于python中將字典改造為對象的方法的文章就介紹到這了,更多相關(guān)python字典改造為對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python Pydantic數(shù)據(jù)驗證的實現(xiàn)
本文主要介紹了Python Pydantic數(shù)據(jù)驗證的實現(xiàn)2025-04-04
利用Python實現(xiàn)高效數(shù)據(jù)收集與挖掘的實戰(zhàn)指南
在當(dāng)今數(shù)據(jù)驅(qū)動的時代,如何高效獲取互聯(lián)網(wǎng)上的海量數(shù)據(jù)成為許多企業(yè)和研究者的核心需求,Python憑借其豐富的爬蟲庫和簡潔的語法,成為了數(shù)據(jù)采集領(lǐng)域的首選工具,本文將帶你全面了解如何利用Python爬蟲技術(shù)實現(xiàn)數(shù)據(jù)收集,需要的朋友可以參考下2025-07-07
正則表達式核心語法以及Python的re庫中常用方法總結(jié)
正則表達式是文本處理的瑞士軍刀,而Python的re模塊則是操作這把利器的重要工具包,這篇文章主要介紹了正則表達式核心語法以及Python的re庫中常用方法的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2026-04-04

