天天看点

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