在python中什麼是私有變數域
預設情況下,Python中的成員函式和成員變數都是公開的(public),在python中沒有類似public,private等關鍵詞來修飾成員函式和成員變數。
在python中定義私有變數只需要在變數名或函式名前加上 ”__“兩個下劃線,那麼這個函式或變數就是私有的了。
作用域(scope),程式設計概念,通常來說,一段程式程式碼中所用到的名字並不總是有效/可用的,而限定這個名字的可用性的程式碼範圍就是這個名字的作用域。
作用域的使用提高了程式邏輯的區域性性,增強程式的可靠性,減少名字衝突。
私有變數域就是私有變數的可用範圍。
在內部,python使用一種 name mangling 技術,將 __membername替換成 _classname__membername,也就是說,類的內部定義中,所有以雙下劃線開始的名字都被"翻譯"成前面加上單下劃線和類名的形式。
例如:為了保證不能在class之外訪問私有變數,Python會在類的內部自動的把我們定義的__spam私有變數的名字替換成為
_classname__spam(注意,classname前面是一個下劃線,spam前是兩個下劃線),因此,使用者在外部訪問__spam的時候就會
提示找不到相應的變數。
python中的私有變數和私有方法仍然是可以訪問的;訪問方法如下:
私有變數:例項._類名__變數名
私有方法:例項._類名__方法名()
其實,Python並沒有真正的私有化支援,但可用下劃線得到偽私有。 儘量避免定義以下劃線開頭的變數!
(1)_xxx "單下劃線 " 開始的成員變數叫做保護變數,意思是隻有類例項和子類例項能訪問到這些變數,需透過類提供的介面進行訪問;不能用'from module import *'匯入。
(2)__xxx 類中的私有變數/方法名 (Python的函式也是物件,所以成員方法稱為成員變數也行得通。)," 雙下劃線 " 開始的是私有成員,意思是隻有類物件自己能訪問,連子類物件也不能訪問到這個資料。
(3)__xxx__ 系統定義名字,前後均有一個“雙下劃線” 代表python裡特殊方法專用的標識,如 __init__()代表類的建構函式。
更多Python知識請關注欄目。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4687/viewspace-2833793/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python中私有變數和私有方法Python變數
- Python中的作用域是什麼Python
- 什麼是環境變數?Python中如何設定環境變數?變數Python
- Python私有變數Python變數
- 淺談Python中的私有變數Python變數
- Python 中的可變引數: 什麼是*args和**kwargs?Python
- 軟體測試學習中JavaScript中變數和作用域式是什麼?JavaScript變數
- 什麼是環境變數?python設定環境變數有什麼用?變數Python
- JavaScript中是如何定義私有變數的JavaScript變數
- javascript:私有變數 (靜態私有變數為什麼會被所以例項共享?-答疑解惑)JavaScript變數
- Scala 變數是什麼變數
- 在Linux中,什麼是環境變數?如何設定和檢視環境變數?Linux變數
- JavaScript中變數提升是什麼?如何實現?JavaScript變數
- [譯] JavaScript 中的私有變數JavaScript變數
- c++ 原始碼中&&變數是什麼意思呢?C++原始碼變數
- Python 中的數字到底是什麼?Python
- Python中的全域性變數和區域性變數Python變數
- 什麼是Python?Python涉及哪些領域?Python
- python變數與變數作用域Python變數
- 什麼是跨域,什麼是同源跨域
- Python中類變數、成員變數、區域性變數的區別Python變數
- Python是什麼?哪些領域會用到?Python
- python中loc是什麼Python
- python 複數是什麼意思Python
- 什麼是跨域跨域
- js基礎梳理-究竟什麼是變數物件,什麼是活動物件?JS變數物件
- Python語言中變數名是什麼?命名規則有哪些?Python變數
- 什麼是字典?Python字典是可變的嗎?Python
- 什麼是數字廣告領域的 OCPM 模型?模型
- ->在c++中是什麼意思C++
- 在Linux中,什麼是 CLI?Linux
- 在Linux中,什麼是 GUI?LinuxGUI
- 在Linux中,什麼是 inode ?Linux
- 在Linux中,RabbitMQ是什麼?LinuxMQ
- 在python裡int是什麼意思Python
- python中的input是什麼Python
- python中的字典是什麼Python
- python中return是什麼意思?Python