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

python中將字典改造為對象的方法

 更新時間:2023年11月03日 10:19:49   作者:驚瑟  
這篇文章主要介紹了python中將字典改造為對象的方法,在實際項目中,當使用json模塊加載一個深度很深的字典類型的json文件時,使用字典的訪問方式,將會出現(xiàn)很多中括號,即不直觀也不美觀,可以將這個字典轉(zhuǎn)化為對象,使得可以用.的方式訪問,需要的朋友可以參考下

python中將字典改造為對象

在實際項目中,當使用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 詳解。

當一個對象通過’.'來訪問一個屬性時,如果報錯,將會轉(zhuǎn)到__getattr__做進一步處理,此時就可以將該key對應(yīng)的value返回,當然如果value仍然是一個字典,則需要將它繼續(xù)轉(zhuǎn)化為一個Dict2Obj對象。

當訪問不存在的key時,和字典一樣,會彈出異常,為了避免這種情況發(fā)生,類似字典,可以使用get()訪問。

到此這篇關(guān)于python中將字典改造為對象的方法的文章就介紹到這了,更多相關(guān)python字典改造為對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中特殊函數(shù)集錦

    Python中特殊函數(shù)集錦

    這篇文章主要介紹了Python中特殊函數(shù),主要介紹一下四個函數(shù):1 過濾函數(shù)filter 2 映射和歸并函數(shù)map/reduce 3 裝飾器@ 4 匿名函數(shù)lamda,需要的朋友可以參考下
    2015-07-07
  • python中的TCP(傳輸控制協(xié)議)用法實例分析

    python中的TCP(傳輸控制協(xié)議)用法實例分析

    這篇文章主要介紹了python中的TCP(傳輸控制協(xié)議)用法,結(jié)合完整實例形式分析了Python基于TCP協(xié)議的服務(wù)器端與客戶端相關(guān)實現(xiàn)技巧及操作注意事項,需要的朋友可以參考下
    2019-11-11
  • Django 拼接兩個queryset 或是兩個不可以相加的對象實例

    Django 拼接兩個queryset 或是兩個不可以相加的對象實例

    這篇文章主要介紹了Django 拼接兩個queryset 或是兩個不可以相加的對象實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • python得到qq句柄,并顯示在前臺的方法

    python得到qq句柄,并顯示在前臺的方法

    今天小編就為大家分享一篇python得到qq句柄,并顯示在前臺的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 關(guān)于文件Permission denied解決方案(pip)

    關(guān)于文件Permission denied解決方案(pip)

    這篇文章主要介紹了文件Permission denied解決方案(pip),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python異常處理:try、except、else、finally的全面解析

    Python異常處理:try、except、else、finally的全面解析

    在Python中,異常是程序在運行時發(fā)生的錯誤,當Python解釋器遇到一個它不能處理的錯誤時,它會拋出一個異常,異常處理的主要目的是在程序遇到錯誤時,提供一種方法來處理這些錯誤,而不是簡單地讓程序崩潰,本文介紹了Python異常處理:try、except、else、finally的全面解析
    2024-07-07
  • python正則分析nginx的訪問日志

    python正則分析nginx的訪問日志

    最近工作中遇到一個需求,是要分析nginx的訪問日志,覺著利用python來實現(xiàn)比較合適,所以下面這篇文章主要介紹了利用python正則如何分析nginx的訪問日志,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • Python下的subprocess模塊的入門指引

    Python下的subprocess模塊的入門指引

    這篇文章主要介紹了Python下的subprocess模塊的入門指引,subprocess模塊被用于Python的多線程編程,需要的朋友可以參考下
    2015-04-04
  • 實現(xiàn)?Python?腳本生成命令行

    實現(xiàn)?Python?腳本生成命令行

    這篇文章主要介紹了實現(xiàn)?Python?腳本生成命令行,文章通過定義一個?scrape?方法展開詳細內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • django使用圖片延時加載引起后臺404錯誤

    django使用圖片延時加載引起后臺404錯誤

    本文給大家介紹的是作者在Django中使用圖片的延時加載技術(shù)后引起后臺404錯誤的問題以及解決思路和方法,有需要的小伙伴可以參考下
    2017-04-04

最新評論