天天看点

python私有成员

在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过

_

前缀来实现的。

正常的函数和变量名是公开的(public),可以被直接引用,比如:

abc

x123

PI

等;

类似

__xxx__

这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的

__author__

__name__

就是特殊变量,

hello

模块定义的文档注释也可以用特殊变量

__doc__

访问,我们自己的变量一般不要用这种变量名;

_xxx

__xxx

这样的函数或变量就是非公开的(private),不应该被直接引用,比如

_abc

__abc

等;_xxx,可以被外部访问到self._xxx,__xxx不能被外部通过self.__xxx访问到,但是可以通过self._Class__xxx来访问,但是强烈建议你不要这么干,因为不同版本的Python解释器可能会把

__name

改成不同的变量名。总的来说就是,Python本身没有任何机制阻止你干坏事,一切全靠自觉。

之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。

private函数或变量不应该被别人引用