单下划线
在一个类中的方法或属性用单下划线开头就是告诉别的程序这个属性或方法是私有的.然而对
于这个名字来说并没有什么特别的.
单下划线:"内部使用"的弱指示器.比如,from M import * 将不会引进用但下划线开头的对
象.
双下划线
任何 __spam 形式(至少两个下划线开头,至多一个下划线结尾)都是代替 _classname__spam ,其中classname是当前类的名字.所以它能用来定义私有类的实例和类变量,方法,在全局中的变量,甚至是实例中的变量.可以区别不同类的实例.
例子
在实例名字前单下划线和双下划线的含义
class MyClass():
def __init__(self):
self.__superprivate = "Hello"
self._semiprivate = ", world!"
mc = MyClass()
print mc.__superprivate
报错:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: myClass instance has no attribute '__superprivate'
print mc._semiprivate
结果:
, world!
print mc.__dict__
结果:
{'_MyClass__superprivate': 'Hello', '_semiprivate': ', world!'}
image.png