python中將字典改造為對象的方法
python中將字典改造為對象
在實(shí)際項(xiàng)目中,當(dāng)使用json模塊加載一個(gè)深度很深的字典類型的json文件時(shí),使用字典的訪問方式,將會出現(xiàn)很多中括號,即不直觀也不美觀,可以將這個(gè)字典轉(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)一個(gè)對象通過’.'來訪問一個(gè)屬性時(shí),如果報(bào)錯(cuò),將會轉(zhuǎn)到__getattr__做進(jìn)一步處理,此時(shí)就可以將該key對應(yīng)的value返回,當(dāng)然如果value仍然是一個(gè)字典,則需要將它繼續(xù)轉(zhuǎn)化為一個(gè)Dict2Obj對象。
當(dāng)訪問不存在的key時(shí),和字典一樣,會彈出異常,為了避免這種情況發(fā)生,類似字典,可以使用get()訪問。
到此這篇關(guān)于python中將字典改造為對象的方法的文章就介紹到這了,更多相關(guān)python字典改造為對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用 Python 實(shí)現(xiàn)微信公眾號粉絲遷移流程
近日,因公司業(yè)務(wù)需要,需將原兩個(gè)公眾號合并為一個(gè),即要將其中一個(gè)公眾號(主要是粉絲)遷移到另一個(gè)公眾號。這篇文章主要介紹了使用 Python 實(shí)現(xiàn)微信公眾號粉絲遷移,需要的朋友可以參考下2018-01-01
Python Pydantic數(shù)據(jù)驗(yàn)證的實(shí)現(xiàn)
本文主要介紹了Python Pydantic數(shù)據(jù)驗(yàn)證的實(shí)現(xiàn)2025-04-04
通過Python pyecharts輸出保存圖片代碼實(shí)例
這篇文章主要介紹了通過Python pyecharts輸出保存圖片代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
利用Python實(shí)現(xiàn)高效數(shù)據(jù)收集與挖掘的實(shí)戰(zhàn)指南
在當(dāng)今數(shù)據(jù)驅(qū)動的時(shí)代,如何高效獲取互聯(lián)網(wǎng)上的海量數(shù)據(jù)成為許多企業(yè)和研究者的核心需求,Python憑借其豐富的爬蟲庫和簡潔的語法,成為了數(shù)據(jù)采集領(lǐng)域的首選工具,本文將帶你全面了解如何利用Python爬蟲技術(shù)實(shí)現(xiàn)數(shù)據(jù)收集,需要的朋友可以參考下2025-07-07
正則表達(dá)式核心語法以及Python的re庫中常用方法總結(jié)
正則表達(dá)式是文本處理的瑞士軍刀,而Python的re模塊則是操作這把利器的重要工具包,這篇文章主要介紹了正則表達(dá)式核心語法以及Python的re庫中常用方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-04-04

