有三种情况 :
-
_x
:私有变量(保护变量),只有类对象和子类对象能够访问这些变量(但是避免类外面使用) -
__x
: 私有变量,外部访问违法 -
__x__
: 系统定义,只有类对象自己能访问
class A:
def _a(self):
return '单下滑线'
def __b(self):
return '双下划线'
def __c__(self):
return '双下划线2'
def bb(self):
return self.__b()
class B(A):
def __init__(self):
super().__init__() 调用父类的方法
a = A()
print(a._a()) 单下滑线
print(a.__b()) # 报错
print(a.__c__()) 双下划线2
print a.bb() 双下划线
b = B()
print(b._a()) 单下滑线
print(b.__b()) # 报错
print(b.__c__()) 双下划线2
结论:
1、_xxx 不能用于’from module import *’ 以单下划线开头的表示的是protected(受保护的)类型的变量。即保护类型只能允许其本身与子类进行访问。
2、__xxx 双下划线的表示的是私有类型的变量。只能是允许这个类本身进行访问了。连子类也不可以
3、__xxx___
定义的是特列方法。像__init__
之类的