成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 中的單下劃線和雙下劃線

開發 前端
通過使用前導雙下劃線,以確保類的某些屬性或方法只能從類本身內部訪問。這有助于防止意外修改重要的內部數據,并使代碼更加可靠和可維護。

哈嘍大家好,我是咸魚。

當我們在學習 Python 的時候,可能會經常遇到單下劃線 _  和雙下劃線 __ 這兩種命名方式。

單下劃線 _  和雙下劃線 __ 不僅僅是只是一種簡單的命名習慣,它們在 Python 中有著特殊的含義,對于代碼的可讀性和功能實現有著關鍵的作用。

那么今天我們來看一看在 Python 中單下劃線和雙下劃線的用法和意義。

前導單下劃線

前導單下劃線(Leading Single Underscore)通常用于命名變量、方法和屬性,表示這些命名的元素是【私有】的或者說是【內部使用】的。

這種命名約定并不是嚴格的語言規則(即非強制性),而是一種約定,告訴開發人員該對象不應該被外部直接訪問或修改

圖片圖片

比如說下面的例子中,_internal_var和_internal_method都以前導單下劃線開頭,表示它們是類的內部使用。

而public_method是公共方法,可以在類外部訪問。

圖片圖片

雖然可以在類外部訪問前導單下劃線命名的變量和方法,但是按照約定,建議只在類內部使用,而避免在類外部直接訪問它們。

單下劃線

單下劃線通常用作一個占位符,用于表示一個不重要的變量名或迭代中的臨時變量,即在解構賦值或循環迭代中不需要使用的變量

例子一中,_ 用作一個占位符變量,表示在tuple_returning_function()返回的元組中的某個值,但是在解構賦值中沒有被使用。

圖片圖片

例子二中,_ 用作循環迭代中的占位符,因為循環體中不需要使用循環變量的值,只是執行了三次打印操作

圖片圖片

單后綴下劃線

單個后綴下劃線(Single trailing underscores)通常用于避免與 Python 關鍵字產生命名沖突。它被用作標識符的后綴,以示與Python關鍵字有所區別。

比如說我想使用一個在 Python 中已經是保留關鍵字的變量名時,比如class、def、type等。為了避免沖突,可以添加后綴下劃線。

圖片圖片

Dunder 方法

Dunder 方法指的是以雙下劃線(__)開頭和結尾的特殊方法(也稱為魔術方法或特殊方法)。

這些方法具有特殊的行為,可以在自定義類中重寫以改變類的行為。Dunder方法的名稱是Python中預定義的,例如__init__、__str__、__repr__等。

下面是一些常見的 Dunder 方法:

  1. __init__(self, ...): 初始化方法,在對象實例化時調用,用于初始化對象的屬性。
  2. __str__(self): 將對象轉換為字符串表示形式,當使用print()函數或str()函數時調用。
  3. __repr__(self): 返回一個包含對象信息的字符串,通常用于開發和調試,可通過repr()函數調用。
  4. __len__(self): 返回對象的長度,通過len()函數調用。
  5. __getitem__(self, key): 獲取對象的元素,用于索引操作,例如obj[key]。
  6. __setitem__(self, key, value): 設置對象的元素,用于索引賦值操作,例如obj[key] = value。
  7. __delitem__(self, key): 刪除對象的元素,用于索引刪除操作,例如del obj[key]。
  8. __call__(self, ...): 將對象作為函數調用,使得對象實例可調用。

我們在下面的例子中定義了 __add__  dunder 方法,并創建了兩個實例

圖片圖片

我們定義了一個 Point 類,它有 x、y 兩個實例變量以及__add__ 方法和__str__ 方法

當我們使用 + 運算符對 Point 的兩個實例(p1、p2)求和時,__add__ 會自動調用。它返回一個新 的 Point 對象(p3),其 x 和 y 值是兩個原始 Point對象的 x和 y 值的和

當使用print()函數時調用自定義的__str__ 方法

前導雙下劃線

前導雙下劃線作為前綴在對象名前使用時,表示這是一個特殊的命名約定,它在類定義中用于創建私有屬性或方法。

當在類中使用雙下劃線作為前綴時,Python 解釋器會自動修改屬性名,以避免在子類中發生命名沖突。這個過程被稱為名稱修飾(name mangling)

比如下面這個例子:

圖片圖片

__private_var屬性在類內部被訪問,但是在類外部直接訪問會導致 AttributeError錯誤。

這是因為 Python 對 __private_var 進行了名稱修飾,實際名稱變成了 obj._MyClass__private_var,這樣避免了外部直接訪問

但是我們可以通過調用類內部方法 get_private_var() 在類外部訪問私有屬性。

通過使用前導雙下劃線,以確保類的某些屬性或方法只能從類本身內部訪問。這有助于防止意外修改重要的內部數據,并使代碼更加可靠和可維護

但如果你知道修飾后的名稱,你仍可以在類外部去訪問

責任編輯:武曉燕 來源: 咸魚運維雜談
相關推薦

2025-06-05 02:43:00

2021-08-08 22:27:13

Python下劃線方法

2023-11-09 08:55:17

Python雙下劃線

2010-03-04 10:35:51

Python下劃線

2024-08-20 16:32:37

python接口自動化

2021-07-31 19:21:34

Python下劃線數值

2021-12-26 22:55:26

Python下劃線編程

2020-09-22 09:41:48

Python下劃線開發

2024-08-16 22:00:38

2013-07-24 19:27:45

iOS開發學習自定義帶下劃線文本UI

2014-05-08 10:36:59

CSS單詞連字符

2020-10-24 11:09:35

Python下劃線用法

2010-01-20 14:13:33

C++變量

2021-10-20 07:36:03

Python構造方法

2024-09-26 10:44:53

MySQL數據庫數據

2009-07-10 14:58:13

JLabel組件JFC和Swing

2023-11-30 08:21:33

2022-12-19 15:12:34

python運算符

2015-07-22 17:21:34

Oracle數據字典

2016-10-27 15:58:35

魔術方法PHP
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产高清在线精品一区二区三区 | 蜜臀久久 | 伊人久久大香线 | 久久99视频 | 欧美999| 精品视频999 | 精品欧美黑人一区二区三区 | 精品久久一区二区 | 欧美日韩中文字幕在线 | 欧美色综合| 亚洲视频在线免费观看 | 精品在线一区二区 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 伊人精品视频 | 国产精品福利网 | 久草综合在线 | 久热免费在线 | 欧美4p| 欧美xxxⅹ性欧美大片 | 欧美日产国产成人免费图片 | 亚洲在线久久 | 午夜精品久久久久久久星辰影院 | 九九国产 | 91久久网站| 欧美一区二区三区日韩 | 91久久精品国产免费一区 | 国产精品久久久久久中文字 | 久久国产日韩欧美 | 欧美综合一区二区三区 | 欧美成人精品在线 | 欧区一欧区二欧区三免费 | xx性欧美肥妇精品久久久久久 | 久久一区视频 | 天天摸天天干 | 日韩电影免费在线观看中文字幕 | 欧美11一13sex性hd | 欧美久久久久 | 日本精品久久久久久久 | 性欧美精品一区二区三区在线播放 | 欧洲色综合 | 日中文字幕在线 |