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

一文帶你掌握Python中的雙下劃線寫法

 更新時(shí)間:2023年10月20日 09:43:59   作者:孫北海  
在?Python?中,雙下劃線--也被稱為“dunder”--是一種用于修飾類屬性名稱或類方法名稱的行為,下面小編就來和大家詳細(xì)講講如何在Python中使用雙下劃線吧

基本概念

在 Python 中,雙下劃線--也被稱為“dunder”--是一種用于修飾類屬性名稱或類方法名稱的行為。當(dāng)開發(fā)人員在類內(nèi)部的屬性名稱或方法名稱前加上雙下劃線時(shí),Python 會(huì)對其進(jìn)行名稱修飾。具體的修飾方法是:在屬性名稱或方法名稱前加上類名作為前綴。

舉個(gè)例子,如果我們有一個(gè)名為MyClass的類,其中包含一個(gè)名為__my_attribute的屬性,Python將自動(dòng)將其重命名為_MyClass__my_attribute。Python 內(nèi)置的這種名稱修飾機(jī)制有助于避免類之間的屬性名稱沖突。

讓我們看一個(gè)例子。

class MyClass:
    def __init__(self):
        self.__my_attribute = 42

obj = MyClass()
print(obj.__my_attribute)  # 這將觸發(fā)一個(gè) AttributeError
print(obj._MyClass__my_attribute)  # 這行語句將會(huì)運(yùn)行正常

在上面的代碼中,嘗試直接訪問obj.__my_attribute將導(dǎo)致AttributeError,因?yàn)榇嬖诿Q修飾。要訪問屬性,我們需要使用名稱修飾后的名稱,即obj._MyClass__my_attribute。

下面讓我們來詳細(xì)了解一下如何在 Python 中使用雙下劃線。

如何在Python中使用雙下劃線

1.私有屬性

雙下劃線屬性通常用于在類內(nèi)部創(chuàng)建私有屬性。雖然 Python 沒有像某些其他語言那樣的嚴(yán)格訪問控制,但這種命名約定可以向其他開發(fā)人員發(fā)出信號,表明這些屬性不應(yīng)直接訪問。

class BankAccount:
    def __init__(self, balance=0):
        self.__balance = balance

    def deposit(self, amount):
        if amount > 0:
            self.__balance += amount

    def withdraw(self, amount):
        if amount > 0 and amount <= self.__balance:
            self.__balance -= amount

    def get_balance(self):
        return self.__balance

BankAccount類中,__balance屬性被視為私有屬性,我們使用雙下劃線表示。這可以在某種程度上防止外部直接訪問該屬性。

2.避免屬性名稱沖突

如前所述,雙下劃線有助于避免類之間的屬性名稱沖突。這在繼承場景中特別有用。

class Parent:
    def __init__(self):
        self.__my_attribute = "父類的屬性"

class Child(Parent):
    def __init__(self):
        super().__init__()
        self.__my_attribute = "子類的屬性"

parent_obj = Parent()
child_obj = Child()

print(parent_obj._Parent___my_attribute)  # 輸出“父類的屬性”
print(child_obj._Child___my_attribute)   # 輸出“子類的屬性”

通過使用雙下劃線,Child類中的__my_attribute屬性不會(huì)與Parent類中的屬性沖突。

雖然雙下劃線可以很有用,但我們還應(yīng)該謹(jǐn)慎使用。以下是一些需要盡量遵循的最佳實(shí)踐規(guī)范:

  • 避免過度使用名稱修飾:  謹(jǐn)慎使用雙下劃線。過度使用可能會(huì)使我們的代碼變得不易閱讀和維護(hù)。
  • 考慮在大多數(shù)情況下使用單下劃線:  對于大多數(shù)情況下,僅使用單個(gè)前導(dǎo)下劃線即可表示屬性僅供內(nèi)部使用。將雙下劃線保留用于可能發(fā)生名稱沖突的情況。
  • 文檔化私有屬性:  如果選擇使用雙下劃線,請?jiān)陬惖奈臋n字符串或注釋中記錄這些私有屬性的用途。
  • 使用獲取器和設(shè)置器方法:  當(dāng)封裝很重要時(shí),考慮使用獲取器和設(shè)置器方法來訪問和修改私有屬性。這提供了更好的屬性訪問控制,并允許進(jìn)行必要的驗(yàn)證。

總結(jié)

對開發(fā)人員而言,Python 中的雙下劃線是一種很有用的工具,用于修飾屬性名稱或方法名稱,并在類內(nèi)部創(chuàng)建私有屬性和私有方法。這種雙下劃線的修飾方式有助于避免名稱沖突并改善代碼的組織。

當(dāng)然,我們需要謹(jǐn)慎使用雙下劃線,并盡量遵循最佳實(shí)踐規(guī)范,以確保我們的代碼保持可讀性和可維護(hù)性。

到此這篇關(guān)于一文帶你掌握Python中的雙下劃線寫法的文章就介紹到這了,更多相關(guān)Python雙下劃線內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決Pytorch半精度浮點(diǎn)型網(wǎng)絡(luò)訓(xùn)練的問題

    解決Pytorch半精度浮點(diǎn)型網(wǎng)絡(luò)訓(xùn)練的問題

    這篇文章主要介紹了解決Pytorch半精度浮點(diǎn)型網(wǎng)絡(luò)訓(xùn)練的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python中的Numpy入門教程

    Python中的Numpy入門教程

    這篇文章主要介紹了Python中的Numpy入門教程,著重講解了矩陣中的數(shù)組操作,需要的朋友可以參考下
    2014-04-04
  • Python基礎(chǔ)之pip如何更換鏡像源

    Python基礎(chǔ)之pip如何更換鏡像源

    pip的源是指pip安裝包所依賴的索引地址,下面這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)之pip如何更換鏡像源的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • python-opencv在有噪音的情況下提取圖像的輪廓實(shí)例

    python-opencv在有噪音的情況下提取圖像的輪廓實(shí)例

    下面小編就為大家?guī)硪黄猵ython-opencv在有噪音的情況下提取圖像的輪廓實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • Python探索之Metaclass初步了解

    Python探索之Metaclass初步了解

    本文先簡單介紹了Python中的類,然后是主要內(nèi)容,涉及Metaclass的相關(guān)內(nèi)容,還是不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • python使用pdfminer解析pdf文件的方法示例

    python使用pdfminer解析pdf文件的方法示例

    這篇文章主要介紹了python使用pdfminer解析pdf文件的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • Django框架之django admin的命令行詳解

    Django框架之django admin的命令行詳解

    這篇文章主要介紹了Django框架之django admin的命令行知識,文中通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • python中int與str互轉(zhuǎn)方法

    python中int與str互轉(zhuǎn)方法

    最近學(xué)習(xí)python中的數(shù)據(jù)類型時(shí),難免聯(lián)想到j(luò)ava中的基本型數(shù)據(jù)類型與引用型數(shù)據(jù)類型。接下來通過本文給大家介紹python中int與str互轉(zhuǎn),需要的朋友可以參考下
    2018-07-07
  • python?OpenCV?圖像通道數(shù)判斷

    python?OpenCV?圖像通道數(shù)判斷

    這篇文章主要介紹了python?OpenCV?圖像通道數(shù)判斷,文章基于Python的相關(guān)內(nèi)容展開對文章主題的詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-04-04
  • 詳解超星腳本出現(xiàn)亂碼問題的解決方法(Python)

    詳解超星腳本出現(xiàn)亂碼問題的解決方法(Python)

    超星助手是一款為孩子們提供學(xué)習(xí)的軟件,支持用戶們后臺(tái)運(yùn)行多開等,還可以簽到,查題等多功能,下面這篇文章主要給大家介紹了關(guān)于超星腳本出現(xiàn)亂碼問題的解決方法,需要的朋友可以參考下
    2022-05-05

最新評論