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

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

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

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ù)集錦

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

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

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

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

    Django 拼接兩個(gè)queryset 或是兩個(gè)不可以相加的對象實(shí)例

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

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

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

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

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

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

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

    python正則分析nginx的訪問日志

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

    Python下的subprocess模塊的入門指引

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

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

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

    django使用圖片延時(shí)加載引起后臺404錯(cuò)誤

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

最新評論