天天看點

8.5 類的私有變量

1

2

3

4

5

6

7

8

9

10

11

12

13

<code>class</code> <code>A(</code><code>object</code><code>):</code>

<code>    </code><code>_name</code><code>=</code><code>'zhou'</code>

<code>    </code><code>_sex</code><code>=</code><code>'F'</code>

<code>    </code><code>def</code> <code>hello(</code><code>self</code><code>):</code>

<code>        </code><code>print</code><code>(</code><code>self</code><code>._name)</code>

<code>        </code><code>print</code><code>(</code><code>self</code><code>._sex)</code>

<code>    </code><code>def</code> <code>get_sex(</code><code>self</code><code>):</code>

<code>        </code><code>return</code> <code>self</code><code>._sex</code>

<code>        </code> 

<code>a</code><code>=</code><code>A()</code>

<code>print</code><code>(a._name)</code>

<code>a.hello()</code>

<code>print</code><code>(a.get_sex())</code>

1、_xx 以單下劃線開頭的表示的是protected類型的變量。

即保護類型隻能允許其本身與子類進行通路。若内部變量标示,

如: 當使用“from M import”時,不會将以一個下劃線開頭的對象引入 。

2、__xx 雙下劃線的表示的是私有類型的變量。

隻能允許這個類本身進行通路了,連子類也不可以用于命名一個類屬性(類變量),

調用時名字被改變(在類FooBar内部,__boo變成_FooBar__boo,如self._FooBar__boo)

3、__xx__定義的是特列方法。

使用者控制的命名空間内的變量或是屬性,如init , __import__或是file 。

隻有當文檔有說明時使用,不要自己定義這類變量。 (就是說這些是python内部定義的變量名)

 本文轉自 歸來仍少年 51CTO部落格,原文連結:http://blog.51cto.com/shaoniana/1980566