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

python單下劃線和雙下劃線屬性區(qū)別

 更新時間:2025年12月25日 10:44:28   作者:珠峰日記  
本文主要介紹了python單下劃線和雙下劃線屬性區(qū)別,主要在于命名規(guī)范、訪問意圖、名稱改寫機制以及子類繼承中的表現(xiàn),感興趣的可以了解一下

在Python類中,單下劃線開頭的屬性( _attr)和雙下劃線開頭的屬性( __attr)主要有以下區(qū)別:

1. 命名規(guī)范與訪問意圖

  • 單下劃線(_attr):
    屬于約定俗成的“受保護”屬性,僅作為開發(fā)者之間的約定,提示該屬性不應被外部直接訪問,但Python本身不強制限制訪問。
    本質(zhì)上和普通屬性無語法差異,只是一種代碼規(guī)范(PEP 8),用于標識“內(nèi)部使用”的屬性/方法。

  • 雙下劃線(__attr):
    屬于私有屬性,Python會對其進行名稱改寫(name mangling),以防止子類意外覆蓋或外部直接訪問,是一種語法層面的限制。

2. 名稱改寫機制

  • 雙下劃線屬性
    Python會將__attr自動改寫為_類名__attr(例如,類A中的__x會變成_A__x),外部或子類無法直接通過__attr訪問,需通過改寫后的名稱或類內(nèi)方法訪問。
    示例

    class A:
        def __init__(self):
            self.__x = 10  # 雙下劃線屬性
    
    a = A()
    print(a.__x)  # 報錯:AttributeError
    print(a._A__x)  # 輸出10(可通過改寫后的名稱訪問)
    
  • 單下劃線屬性
    無名稱改寫,外部仍可直接訪問(如a._x),僅靠開發(fā)者自覺遵守“不外部訪問”的約定。
    示例

    class B:
        def __init__(self):
            self._y = 20  # 單下劃線屬性
    
    b = B()
    print(b._y)  # 輸出20(無語法限制)
    

3. 子類繼承中的表現(xiàn)

  • 單下劃線屬性
    子類可直接繼承并訪問,無語法限制(仍靠約定)。

    class Parent:
        def __init__(self):
            self._x = 10
    
    class Child(Parent):
        def show(self):
            print(self._x)  # 正常輸出10
    
    c = Child()
    c.show()
    
  • 雙下劃線屬性
    子類無法直接訪問父類的雙下劃線屬性(因名稱改寫),需通過父類提供的方法訪問。

    class Parent:
        def __init__(self):
            self.__x = 10
        def get_x(self):
            return self.__x
    
    class Child(Parent):
        def show(self):
            print(self.__x)  # 報錯:AttributeError(子類自身無__x)
            print(self.get_x())  # 輸出10(通過父類方法訪問)
    
    c = Child()
    c.show()
    

4. 用途總結

  • 單下劃線(_attr):
    用于標識“內(nèi)部使用”的屬性/方法,提醒開發(fā)者避免外部直接調(diào)用,適用于模塊內(nèi)或類內(nèi)的私有邏輯,但不強制限制。
    常見于模塊級別的“私有”函數(shù)/變量(如import *不會導入單下劃線開頭的對象)。

  • 雙下劃線(__attr):
    用于真正需要限制訪問的場景(如避免子類覆蓋父類屬性、防止外部篡改),通過名稱改寫實現(xiàn)語法級別的隔離,但并非絕對安全(仍可通過_類名__attr訪問)。

注意

Python中不存在真正的“私有”屬性,雙下劃線的限制可被繞過,其設計目的是避免意外沖突,而非阻止惡意訪問。實際開發(fā)中,單下劃線的約定更常用,雙下劃線慎用(可能增加代碼復雜度)。

到此這篇關于python單下劃線和雙下劃線屬性區(qū)別的文章就介紹到這了,更多相關python單下劃線和雙下劃線區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 書寫Python代碼的一種更優(yōu)雅方式(推薦!)

    書寫Python代碼的一種更優(yōu)雅方式(推薦!)

    Python是一個高層次的結合了解釋性、編譯性、互動性和面向?qū)ο蟮哪_本語言,下面這篇文章主要給大家介紹了關于書寫Python代碼的一種更優(yōu)雅方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • Python實現(xiàn)PDF轉(zhuǎn)Word的方法詳解

    Python實現(xiàn)PDF轉(zhuǎn)Word的方法詳解

    由于PDF的文件大多都是只讀文件,有時候為了滿足可以編輯的需要通??梢詫DF文件直接轉(zhuǎn)換成Word文件進行操作。本文為大家整理了一些實現(xiàn)方法,希望對大家有所幫助
    2023-02-02
  • Python的多種對象工廠模式方便代碼維護擴展

    Python的多種對象工廠模式方便代碼維護擴展

    這篇文章主要為大家介紹了Python的多種對象工廠模式更方便我們進行代碼維護擴展,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Python中對象的比較操作==和is區(qū)別詳析

    Python中對象的比較操作==和is區(qū)別詳析

    這篇文章主要給大家介紹了關于Python中對象的比較操作==和is區(qū)別的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Python實現(xiàn)一個簡單的驗證碼程序

    Python實現(xiàn)一個簡單的驗證碼程序

    這篇文章主要介紹了Python實現(xiàn)一個簡單的驗證碼程序,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • 詳細介紹Python函數(shù)中的默認參數(shù)

    詳細介紹Python函數(shù)中的默認參數(shù)

    這篇文章主要介紹了詳細介紹Python函數(shù)中的默認參數(shù),包括默認參數(shù)的傳遞和求值等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • Python連接和操作Elasticsearch的流程步驟

    Python連接和操作Elasticsearch的流程步驟

    本文將詳細介紹如何使用?Python?連接和操作?Elasticsearch,包括安裝客戶端、基本的操作(如創(chuàng)建索引、添加數(shù)據(jù)、查詢數(shù)據(jù)等)以及高級應用(如聚合查詢、索引映射等),需要的朋友可以參考下
    2025-04-04
  • Python入門之字符串操作詳解

    Python入門之字符串操作詳解

    字符串是Pyhon常用的數(shù)據(jù)類型,這篇文章主要為大家詳細介紹一下python字符串的一些常見實用操作,需要的朋友可以參考下
    2022-09-09
  • Python中如何實現(xiàn)真正的按位取反運算

    Python中如何實現(xiàn)真正的按位取反運算

    按位取反是位運算符,而位運算符是應用在兩個數(shù)的運算上,會對數(shù)字的二進制所有位數(shù)進行從低到高的運算,下面這篇文章主要給大家介紹了關于Python中如何實現(xiàn)真正的按位取反運算的相關資料,需要的朋友可以參考下
    2023-02-02
  • Python Web框架Tornado運行和部署

    Python Web框架Tornado運行和部署

    這篇文章主要為大家詳細介紹了Python Web框架Tornado運行和部署的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-04-04

最新評論

略阳县| 东辽县| 贵定县| 利津县| 栾川县| 巨野县| 中牟县| 东至县| 岳阳市| 西昌市| 若尔盖县| 疏附县| 赤峰市| 乐清市| 五莲县| 綦江县| 夏津县| 阿坝| 玉门市| 刚察县| 平塘县| 姜堰市| 禄劝| 册亨县| 富锦市| 澄江县| 磐石市| 岐山县| 虹口区| 基隆市| 江西省| 平邑县| 会东县| 环江| 宝山区| 东莞市| 特克斯县| 金溪县| 漾濞| 扎赉特旗| 陆丰市|