python类的成员前加双下划线"__", 则被看作"私有"成员. 实例不能简单地通过.来访问. 但python的"私有"成员也不是不可访问的, 只是python玩了个"名称变化术":
"尽管双下划线有些奇怪,但是看起来像是其他语言中的标准的私有方法. 真正发生的事情才是不标准的. 类的内部定义中, 所有以双下划线开始的名字都被"翻译"成前面加上单下划线和类名的形式.
>>>Secrite._Secretive__inaccessible
在了解了这些幕后的事情后, 实际上还是能在类外访问这些私有方法, 尽管不应该这么做:
>>>s._Secritive__inaccessible()
Bet you can't see me...
简而言之, 确保其他人不会访问对象的方法和特性是不可能的, 但是这类"名称变化术"就是他们不应该访问这些函数或者特性的强有力信号.
如果不需要使用这种方法但是又想被其他对象不要访问内部数据,那么可以使用单下划线. 这不过是个习惯, 但的确有实际效果. 例如, 前面有下划线的名字都不会被带星号的imports语句(from module import *)导入."
题后话:
以前老是听闻python是Java的下一个替代语言. 我不知道写这些资料的中国人是脑子进水, 还是彻底业外人士,说话如此不积阴德.
学了几天python, 发觉Java的就是一种思想, 不是python可以简单地模仿的, 更别说代替了....