在python類中,有屬性和方法,外部代碼可以直接通過實例來訪問修改。
如果需要讓內部的屬性不被外部訪問到,在屬性變量前面加上__2個下劃線。
在python中,實例的變量名如果是由__2個下花錢開頭的,就代表這是一個私有變量:只有內部可以訪問,外部不許直接通過類或者實例訪問。
代碼:
雖然說外部訪問不了一個內部私有屬性,但是可以通過類中方法間接的訪問、修改
類內部方法getname和setname:
雙下劃線開頭的私有屬性,是不是一定不能從外部訪問呢?
其實不是的:
python中2個有趣的現象,外部變量遮蔽類中的變量。
從實例中訪問類屬性必須要謹慎。
和通常python變量一樣,任何對實例屬性的賦值都會創建一個實例屬性(如果實例屬性不存在的話),并且對其賦值。
但是,如果類屬性中存在同名的屬性,就是產生前面所說的有趣的副作用。
python3.x依舊存在這個情況。
下面上代碼:
為什么下面的dict類型的就會del報錯呢??
原因在于:python是由c寫成的cpython。
c語言中,并沒有字符串這個概念:c中叫做字符數組,存儲在內存中,是一塊連續的空間,不可修改,任何修改字符數組的行為,都會在不影響原始的字符數組下,創建產生一個新的字符數組。
而dict就不一樣了,它在內存中存儲,是一系列非連續的內存空間,可以在原來的基礎上修改,所以,第二個例子中del f.x就會報錯。
-
C語言
+關注
關注
180文章
7598瀏覽量
136194 -
python
+關注
關注
56文章
4782瀏覽量
84453
原文標題:python的類訪問控制
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論