最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)字典的點號取值的三種常用方式

 更新時間:2026年01月19日 09:26:02   作者:大霸王龍  
這篇文章主要介紹了在Python中通過自定義類實現(xiàn)字典的點號取值(dict.key語法)的三種方案,并對比了它們的關(guān)鍵特性、適用場景和使用建議,需要的朋友可以參考下

在 Python 中實現(xiàn)字典的點號取值(dict.key 語法)可以通過自定義類實現(xiàn)。以下是三種常用實現(xiàn)方式,根據(jù)需求選擇合適方案:

方案1:簡單屬性訪問(推薦)

class DotDict(dict):
    """支持點號取值的字典類"""
    __getattr__ = dict.get
    __setattr__ = dict.__setitem__
    __delattr__ = dict.__delitem__

# 使用示例
d = DotDict({"name": "Alice", "age": 30, "address": {"city": "Shanghai"}})

print(d.name)          # 輸出: Alice
print(d.address.city)  # 輸出: Shanghai

d.job = "Engineer"     # 添加新屬性
print(d.job)           # 輸出: Engineer

方案2:遞歸嵌套轉(zhuǎn)換(支持多層嵌套)

class DotDict(dict):
    """支持嵌套字典的點號訪問"""
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for key, value in self.items():
            if isinstance(value, dict):
                self[key] = DotDict(value)
    
    def __getattr__(self, name):
        try:
            value = self[name]
            if isinstance(value, dict) and not isinstance(value, DotDict):
                return DotDict(value)
            return value
        except KeyError:
            raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'")
    
    __setattr__ = dict.__setitem__
    __delattr__ = dict.__delitem__

# 使用示例
data = {
    "user": {
        "name": "Bob",
        "preferences": {
            "theme": "dark",
            "notifications": True
        }
    }
}

d = DotDict(data)
print(d.user.name)                   # 輸出: Bob
print(d.user.preferences.theme)      # 輸出: dark
d.user.preferences.font_size = 14    # 添加嵌套屬性

方案3:只讀訪問(安全模式)

class ReadOnlyDotDict(dict):
    """只讀的點號訪問字典"""
    def __getattr__(self, name):
        if name in self:
            value = self[name]
            if isinstance(value, dict):
                return ReadOnlyDotDict(value)
            return value
        raise AttributeError(f"No attribute '{name}'")
    
    def __setattr__(self, name, value):
        raise TypeError("'ReadOnlyDotDict' object is read-only")

# 使用示例
config = ReadOnlyDotDict({"api": {"url": " "timeout": 30}})
print(config.api.url)  # 輸出: 
config.api.port = 8080 # 拋出 TypeError

關(guān)鍵特性對比

特性方案1方案2方案3
點號取值???
嵌套字典支持???
動態(tài)添加屬性???
修改現(xiàn)有值???
錯誤處理簡單完善嚴(yán)格
適用場景簡單配置復(fù)雜數(shù)據(jù)結(jié)構(gòu)只讀配置

使用建議

  1. 簡單配置:選擇方案1,代碼簡潔高效
  2. 復(fù)雜JSON/嵌套數(shù)據(jù):選擇方案2,自動轉(zhuǎn)換嵌套字典
  3. 安全配置/常量:選擇方案3,防止意外修改
  4. 兼容性:所有方案保持字典原始方法(keys(), values() 等)
  5. 錯誤處理:方案2/3提供明確的 AttributeError 錯誤信息
# 實際應(yīng)用示例 - 加載配置文件
import json
from dot_dict import DotDict  # 假設(shè)保存為 dot_dict.py

with open('config.json') as f:
    config = DotDict(json.load(f))

# 點號訪問配置項
print(f"API端點: {config.api.base_url}")
print(f"超時設(shè)置: {config.api.timeout}s")

到此這篇關(guān)于Python實現(xiàn)字典的點號取值的三種常用方式的文章就介紹到這了,更多相關(guān)Python字典的點號取值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python urllib urlopen()對象方法/代理的補充說明

    python urllib urlopen()對象方法/代理的補充說明

    這篇文章主要介紹了python urllib urlopen()對象方法/代理的補充說明的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Python文件讀寫操作基礎(chǔ)知識和實戰(zhàn)應(yīng)用

    Python文件讀寫操作基礎(chǔ)知識和實戰(zhàn)應(yīng)用

    本文系統(tǒng)講解了Python文件操作的基礎(chǔ)知識和實戰(zhàn)技巧,涵蓋文件打開關(guān)閉、讀寫方法、指針控制、二進制處理、異常處理及性能優(yōu)化策略,同時展望了異步IO、內(nèi)存映射增強等未來趨勢,需要的朋友可以參考下
    2025-06-06
  • pycharm終端安裝pytorch失敗的問題及解決

    pycharm終端安裝pytorch失敗的問題及解決

    這篇文章主要介紹了pycharm終端安裝pytorch失敗的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Python基于文本內(nèi)容實現(xiàn)隱私信息提取與評估

    Python基于文本內(nèi)容實現(xiàn)隱私信息提取與評估

    這篇文章主要為大家介紹了Python如何實現(xiàn)基于文本內(nèi)容的用戶隱私泄露風(fēng)險評估系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2025-03-03
  • 如何使用Python在excel中創(chuàng)建柱狀圖

    如何使用Python在excel中創(chuàng)建柱狀圖

    這篇文章主要給大家介紹了關(guān)于如何使用Python在excel中創(chuàng)建柱狀圖的相關(guān)資料,包括導(dǎo)入模塊、新建工作簿、創(chuàng)建圖表、設(shè)置數(shù)據(jù)范圍、添加標(biāo)題和數(shù)據(jù)系列、以及保存圖表和工作簿,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • 你所不知道的Python技巧13招【實用】

    你所不知道的Python技巧13招【實用】

    有時候你會看到很Cool的Python代碼,你驚訝于它的簡潔,你不由自主地贊嘆:竟然還能這樣寫,其實,這些優(yōu)雅的代碼都要歸功于Python的特性,只要你能掌握這些Pythonic的技巧,你一樣可以寫出像詩一樣的Python代碼,本文主要介紹Python應(yīng)用的一些小技巧,一起來看下吧
    2016-12-12
  • python 獲取當(dāng)前目錄下的文件目錄和文件名實例代碼詳解

    python 獲取當(dāng)前目錄下的文件目錄和文件名實例代碼詳解

    這篇文章主要介紹了python 獲取當(dāng)前目錄下的文件目錄和文件名實例代碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • python實現(xiàn)在線翻譯

    python實現(xiàn)在線翻譯

    這篇文章主要介紹了python實現(xiàn)在線翻譯,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • python中yaml配置文件模塊的使用詳解

    python中yaml配置文件模塊的使用詳解

    本篇文章主要介紹了python中yaml配置文件模塊的使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • python opencv 畫外接矩形框的完整代碼

    python opencv 畫外接矩形框的完整代碼

    這篇文章主要介紹了python-opencv-畫外接矩形框的實例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09

最新評論

巴林右旗| 舞钢市| 安溪县| 芒康县| 保康县| 元阳县| 博湖县| 保德县| 万源市| 百色市| 吴桥县| 贵州省| 汤阴县| 平泉县| 绍兴县| 濮阳县| 白银市| 甘德县| 商丘市| 斗六市| 黑水县| 普格县| 梧州市| 始兴县| 竹山县| 淅川县| 平原县| 芦山县| 黄冈市| 梧州市| 天等县| 连云港市| 桂阳县| 南雄市| 日照市| 中宁县| 乌兰浩特市| 普定县| 久治县| 曲沃县| 湘阴县|