有三種情況 :
-
_x
:私有變量(保護(hù)變量),只有類(lèi)對(duì)象和子類(lèi)對(duì)象能夠訪(fǎng)問(wèn)這些變量(但是避免類(lèi)外面使用) -
__x
: 私有變量,外部訪(fǎng)問(wèn)違法 -
__x__
: 系統(tǒng)定義,只有類(lèi)對(duì)象自己能訪(fǎng)問(wèn)
class A:
def _a(self):
return '單下滑線(xiàn)'
def __b(self):
return '雙下劃線(xiàn)'
def __c__(self):
return '雙下劃線(xiàn)2'
def bb(self):
return self.__b()
class B(A):
def __init__(self):
super().__init__() 調(diào)用父類(lèi)的方法
a = A()
print(a._a()) 單下滑線(xiàn)
print(a.__b()) # 報(bào)錯(cuò)
print(a.__c__()) 雙下劃線(xiàn)2
print a.bb() 雙下劃線(xiàn)
b = B()
print(b._a()) 單下滑線(xiàn)
print(b.__b()) # 報(bào)錯(cuò)
print(b.__c__()) 雙下劃線(xiàn)2
結(jié)論:
1城豁、_xxx 不能用于’from module import *’ 以單下劃線(xiàn)開(kāi)頭的表示的是protected(受保護(hù)的)類(lèi)型的變量赞警。即保護(hù)類(lèi)型只能允許其本身與子類(lèi)進(jìn)行訪(fǎng)問(wèn)弄跌。
2甲喝、__xxx 雙下劃線(xiàn)的表示的是私有類(lèi)型的變量。只能是允許這個(gè)類(lèi)本身進(jìn)行訪(fǎng)問(wèn)了铛只。連子類(lèi)也不可以
3埠胖、__xxx___
定義的是特列方法。像__init__
之類(lèi)的