这里会显示出您选择的修订版和当前版本之间的差别。
python-class:private [2010/06/02 01:18] |
python-class:private [2010/06/02 01:18] (当前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== Python类中的私有成员(私有函数,私有变量) ====== | ||
+ | Python中默认的成员函数,成员变量都是公开的(public),而且python中没有类似public,private等关键词来修饰成员函数,成员变量。 | ||
+ | |||
+ | 在python中定义私有变量只需要在变量名或函数名前加上 "%%__%%"两个下划线,那么这个函数或变量就会为私有的了。 | ||
+ | |||
+ | 在内部,python使用一种 name mangling 技术,将 %%__%%membername替换成 _classname%%__%%membername,所以你在外部使用原来的私有成员的名字时,会提示找不到。 | ||
+ | |||
+ | |||
+ | 命名混淆意在给出一个在类中定义“私有”实例变量和方法的简单途径, | ||
+ | 避免派生类的实例变量定义产生问题,或者与外界代码中的变量搞混。 | ||
+ | 要注意的是混淆规则主要目的在于避免意外错误, | ||
+ | 被认作为私有的变量仍然有可能被访问或修改。 | ||
+ | 在特定的场合它也是有用的,比如调试的时候, | ||
+ | 这也是一直没有堵上这个漏洞的原因之一 | ||
+ | (小漏洞:派生类和基类取相同的名字就可以使用基类的私有变量。) |