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

python下劃線開頭函數(shù)總結(jié)示例詳解

 更新時(shí)間:2025年07月03日 08:56:34   作者:越甲八千  
Python中雙下劃線__開頭的命名有三類,在文中有給詳細(xì)介紹,合理使用可增強(qiáng)封裝性與代碼可讀性,對python下劃線開頭函數(shù)相關(guān)知識感興趣的朋友一起看看吧

在Python中,以雙下劃線 __ 開頭的函數(shù)(或變量)具有特殊的命名含義,主要用于實(shí)現(xiàn)類的私有成員、魔法方法(特殊方法)和名稱修飾(Name Mangling)機(jī)制。下面詳細(xì)解釋這三種情況:

1. 魔法方法(特殊方法)

以雙下劃線開頭并結(jié)尾的方法(如 __init____str__)稱為魔法方法(Magic Methods)或特殊方法(Special Methods)。這些方法由Python解釋器自動調(diào)用,用于實(shí)現(xiàn)類的內(nèi)置行為。

常見魔法方法示例

class MyClass:
    def __init__(self, value):  # 構(gòu)造函數(shù),創(chuàng)建對象時(shí)自動調(diào)用
        self.value = value
    def __str__(self):  # 對象轉(zhuǎn)字符串時(shí)調(diào)用(如print())
        return f"MyClass(value={self.value})"
    def __add__(self, other):  # 定義加法操作(如obj1 + obj2)
        return MyClass(self.value + other.value)
    def __len__(self):  # 定義長度(如len(obj))
        return 1

調(diào)用示例

a = MyClass(10)
b = MyClass(20)
print(a + b)      # 自動調(diào)用 __add__ 和 __str__
print(len(a))     # 自動調(diào)用 __len__

2. 私有方法和屬性(名稱修飾)

以雙下劃線開頭但不以雙下劃線結(jié)尾的方法(如 __private_method)是類的私有成員,通過名稱修飾(Name Mangling)機(jī)制實(shí)現(xiàn)一定程度的訪問限制。

名稱修飾規(guī)則

Python會將類中的 __private_method 重命名為 _類名__private_method,使得該方法在類外部難以直接訪問,但并非完全禁止。

示例代碼

class MyClass:
    def __public_method(self):
        print("這是公開方法")
    def __private_method(self):
        print("這是私有方法")
    def call_private(self):
        self.__private_method()  # 類內(nèi)部可以正常調(diào)用
obj = MyClass()
obj.__public_method()     # 正常調(diào)用
# obj.__private_method()  # 報(bào)錯(cuò):AttributeError
obj._MyClass__private_method()  # 可以訪問,但不推薦(違反封裝原則)

3. 與單下劃線_的區(qū)別

  • 單下劃線 _method:約定俗成的弱私有成員,僅作為開發(fā)者之間的約定,外部仍可訪問。
  • 雙下劃線 __method:通過名稱修飾實(shí)現(xiàn)的強(qiáng)私有成員,外部訪問需通過 _類名__method。

示例對比

class MyClass:
    def _single_underscore(self):
        print("單下劃線方法")
    def __double_underscore(self):
        print("雙下劃線方法")
obj = MyClass()
obj._single_underscore()     # 可以正常調(diào)用(約定不調(diào)用)
obj._MyClass__double_underscore()  # 可以調(diào)用(但破壞封裝)

4. 使用場景建議

  • 魔法方法:用于實(shí)現(xiàn)類的特殊行為,如運(yùn)算符重載、對象創(chuàng)建和銷毀等。
  • 私有方法:用于隱藏類的內(nèi)部實(shí)現(xiàn)細(xì)節(jié),避免外部直接調(diào)用(但需注意并非絕對安全)。
  • 單下劃線:用于模塊級的私有成員(導(dǎo)入時(shí) from module import * 不會導(dǎo)入)或內(nèi)部臨時(shí)變量。

總結(jié)

命名方式含義示例
__method__魔法方法,Python內(nèi)置行為__init__, __add__
__method私有方法,通過名稱修飾實(shí)現(xiàn)封裝__private_method
_method弱私有,約定不被外部直接訪問_helper_method

雙下劃線命名是Python實(shí)現(xiàn)封裝和特殊行為的重要機(jī)制,合理使用可以提高代碼的可讀性和可維護(hù)性。

到此這篇關(guān)于python下劃線開頭函數(shù)總結(jié)的文章就介紹到這了,更多相關(guān)python下劃線開頭函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用python matploblib庫繪制準(zhǔn)確率,損失率折線圖

    使用python matploblib庫繪制準(zhǔn)確率,損失率折線圖

    這篇文章主要介紹了使用python matploblib庫繪制準(zhǔn)確率,損失率折線圖,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python 的 scapy庫,實(shí)現(xiàn)網(wǎng)卡收發(fā)包的例子

    python 的 scapy庫,實(shí)現(xiàn)網(wǎng)卡收發(fā)包的例子

    今天小編就為大家分享一篇python 的 scapy庫,實(shí)現(xiàn)網(wǎng)卡收發(fā)包的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python畫蝴蝶曲線圖的實(shí)例

    python畫蝴蝶曲線圖的實(shí)例

    今天小編就為大家分享一篇python畫蝴蝶曲線圖的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python中的min及返回最小值索引的操作

    Python中的min及返回最小值索引的操作

    這篇文章主要介紹了Python中的min及返回最小值索引的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Python趣味入門教程之循環(huán)語句while

    Python趣味入門教程之循環(huán)語句while

    這篇文章主要給大家介紹了關(guān)于Python趣味入門教程之循環(huán)語句while的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • python超參數(shù)優(yōu)化的具體方法

    python超參數(shù)優(yōu)化的具體方法

    在本篇文章里小編給大家整理了一篇關(guān)于python超參數(shù)優(yōu)化的具體方法,有需要的朋友們可以學(xué)習(xí)下。
    2021-08-08
  • Python判斷有效的數(shù)獨(dú)算法示例

    Python判斷有效的數(shù)獨(dú)算法示例

    這篇文章主要介紹了Python判斷有效的數(shù)獨(dú)算法,結(jié)合實(shí)例形式分析了Python針對數(shù)獨(dú)有效性判定的相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • 解決Python報(bào)錯(cuò):PermissionError: [Errno 13] Permission denied: ‘xxx‘

    解決Python報(bào)錯(cuò):PermissionError: [Errno 13] Permis

    PermissionError是Python內(nèi)置異常的一部分,它在試圖訪問或修改文件系統(tǒng)中的文件或目錄而沒有適當(dāng)權(quán)限時(shí)發(fā)生,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-05-05
  • Python?的counter()函數(shù)解析與示例詳解

    Python?的counter()函數(shù)解析與示例詳解

    在?Python?中,?collections?模塊提供了?Counter?類,用于計(jì)算可迭代對象中元素的數(shù)量,?Counter?是一個(gè)字典的子類,它以元素作為鍵,以元素出現(xiàn)的次數(shù)作為值進(jìn)行計(jì)數(shù),本文給大家介紹Python?的counter()函數(shù),感興趣的朋友一起看看吧
    2023-08-08
  • Python?pandas.replace的用法詳解

    Python?pandas.replace的用法詳解

    在處理數(shù)據(jù)的時(shí)候,很多時(shí)候會遇到批量替換的情況,如果一個(gè)一個(gè)去修改效率過低,也容易出錯(cuò),replace()是很好的方法,下面這篇文章主要給大家介紹了關(guān)于Python?pandas.replace用法的相關(guān)資料,需要的朋友可以參考下
    2022-06-06

最新評論