Python中默认的成员函数,成员变量都是公开的(public),而且python中没有类似public,private等关键词来修饰成员函数,成员变量。
在python中定义私有变量只需要在变量名或函数名前加上 ”__“两个下划线,那么这个函数或变量就会为私有的了。
在内部,python使用一种 name mangling 技术,将 __membername替换成 _classname__membername,所以你在外部使用原来的私有成员的名字时,会提示找不到。
命名混淆意在给出一个在类中定义“私有”实例变量和方法的简单途径,避免派生类的实例变量定义产生问题,或者与外界代码中的变量搞混。要注意的是混淆规则主要目的在于避免意外错误,被认作为私有的变量仍然有可能被访问或修改。在特定的场合它也是有用的,比如调试的时候,这也是一直没有堵上这个漏洞的原因之一(小漏洞:派生类和基类取相同的名字就可以使用基类的私有变量。)
转载地址:http://www.pythonclub.org/python-class/private
本文详细介绍了Python中如何通过命名混淆实现私有成员的定义,解释了私有成员是如何通过namemangling技术隐藏在类内部,并强调了这种机制虽然能避免意外访问,但仍有可能被访问或修改,以及派生类与基类在私有成员使用上的特殊规则。
1341

被折叠的 条评论
为什么被折叠?



