在python類中,有屬性和方法,外部**可以直接通過例項來訪問修改。
如果需要讓內部的屬性不被外部訪問到,在屬性變數前面加上__2個下劃線。
在python中,例項的變數名如果是由__2個下花錢開頭的,就代表這是乙個私有變數:只有內部可以訪問,外部不許直接通過類或者例項訪問。
**:雖然說外部訪問不了乙個內部私有屬性,但是可以通過類中方法間接的訪問、修改
類內部方法getname和setname:
雙下劃線開頭的私有屬性,是不是一定不能從外部訪問呢?
其實不是的:
python中2個有趣的現象,外部變數遮蔽類中的變數。
從例項中訪問類屬性必須要謹慎。
和通常python變數一樣,任何對例項屬性的賦值都會建立乙個例項屬性(如果例項屬性不存在的話),並且對其賦值。
但是,如果類屬性中存在同名的屬性,就是產生前面所說的有趣的***。
python3.x依舊存在這個情況。
下面上**:
為什麼下面的dict型別的就會del報錯呢??
原因在於:python是由c寫成的cpython。
c語言中,並沒有字串這個概念:c中叫做字元陣列,儲存在記憶體中,是一塊連續的空間,不可修改,任何修改字元陣列的行為,都會在不影響原始的字元陣列下,建立產生乙個新的字元陣列。
而dict就不一樣了,它在記憶體中儲存,是一系列非連續的記憶體空間,可以在原來的基礎上修改,所以,第二個例子中delf.x就會報錯。
python實現約瑟夫 約瑟夫問題python實現
python語言之如何實現約瑟夫環問題 def josephus n,m if type n 60個人從1開始編號每人拿乙個號碼牌排成圈,從 1開始報數,第一次報數 totalnum 猴子總數 startnum 開始序號 intervalnum 間隔數def kingelect totalnum,s...
windows下python2和python3共存
配置步驟如下 作業系統 win10 安裝步驟省略,相信都能安裝 1 改名稱給電腦同時裝上python2.7和python3.5,在安裝目錄下修改python.exe為python2.exe和python3.exe 2 更改環境變數,加入d program files python27 和 d pro...
windows下python2和python3共存
配置步驟如下 作業系統 win10 安裝步驟省略,相信都能安裝 1 改名稱給電腦同時裝上python2.7和python3.5,在安裝目錄下修改python.exe為python2.exe和python3.exe 2 更改環境變數,加入d program files python27 和 d pro...