在Python中,通過(guò)單下劃線”_”來(lái)實(shí)現(xiàn)模塊級(jí)別的私有化,一般約定以單下劃線”_”開(kāi)頭的變量、函數(shù)為模塊私有的,也就是說(shuō)”frommoduleNameimport*”將不會(huì)引入以單下劃線”_”開(kāi)頭的變量、函數(shù)
對(duì)于Python中的類(lèi)屬性,可以通過(guò)雙下劃線”__”來(lái)實(shí)現(xiàn)一定程度的私有化。
_”和”__”的使用更多的是一種規(guī)范/約定,不沒(méi)有真正達(dá)到限制的目的:
“_”:以單下劃線開(kāi)頭只能允許其本身與子類(lèi)進(jìn)行訪問(wèn),(起到一個(gè)保護(hù)的作用)
“__”:雙下劃線的表示的是私有類(lèi)型的變量。這類(lèi)屬性在運(yùn)行時(shí)屬性名會(huì)加上單下劃線和類(lèi)名。
“__foo__”:以雙下劃線開(kāi)頭和結(jié)尾的(__foo__)代表python里特殊方法專(zhuān)用的標(biāo)識(shí),如__init__()
'''
在Python中,通過(guò)單下劃線”_”來(lái)實(shí)現(xiàn)模塊級(jí)別的私有化,
一般約定以單下劃線”_”開(kāi)頭的變量、函數(shù)為模塊私有的,
也就是說(shuō)”frommoduleNameimport*”
將不會(huì)引入以單下劃線”_”開(kāi)頭的變量、函數(shù)
'''
importrandom#全部會(huì)導(dǎo)入
fromrandomimport*#_Set不會(huì)倒入
classAnimal:
_eye=2
__leg=4#共有的
def__init__(self,name,food):
print('正在實(shí)例化')
self.name=name
self.food=food
defget_name(self):
print(self.name)
#_”和”__”的使用更多的是一種規(guī)范/約定,并沒(méi)有真正達(dá)到限制的目的:
dog._eye=3
#dog._Animal__leg##__默認(rèn)加一個(gè)類(lèi)名,用來(lái)警告
#“__foo__”:以雙下劃線開(kāi)頭和結(jié)尾的(__foo__)
#代表python里特殊方法專(zhuān)用的標(biāo)識(shí),如__init__()
以上內(nèi)容為大家介紹了Python類(lèi)的私有屬性和方法,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。