python 类里面的单下划线与双下划线的区别(私有和保护) .
Python 用下劃線(xiàn)作為變量前綴和后綴指定特殊變量。
_xxx 不能用'from moduleimport *'導(dǎo)入
__xxx__ 系統(tǒng)定義名字
__xxx 類(lèi)中的私有變量名
核心風(fēng)格:避免用下劃線(xiàn)作為變量名的開(kāi)始。
因?yàn)橄聞澗€(xiàn)對(duì)解釋器有特殊的意義,而且是內(nèi)建標(biāo)識(shí)符所使用的符號(hào),我們建議程序員避免用下劃線(xiàn)作為變量名的開(kāi)始。一般來(lái)講,變量名_xxx被看作是“私有 的”,在模塊或類(lèi)外不可以使用。當(dāng)變量是私有的時(shí)候,用_xxx 來(lái)表示變量是很好的習(xí)慣。因?yàn)樽兞棵鸰_xxx__對(duì)Python 來(lái)說(shuō)有特殊含義,對(duì)于普通的變量應(yīng)當(dāng)避免這種命名風(fēng)格。
"單下劃線(xiàn)" 開(kāi)始的成員變量叫做保護(hù)變量,意思是只有類(lèi)對(duì)象和子類(lèi)對(duì)象自己能訪問(wèn)到這些變量;
"雙下劃線(xiàn)" 開(kāi)始的是私有成員,意思是只有類(lèi)對(duì)象自己能訪問(wèn),連子類(lèi)對(duì)象也不能訪問(wèn)到這個(gè)數(shù)據(jù)。
以單下劃線(xiàn)開(kāi)頭(_foo)的代表不能直接訪問(wèn)的類(lèi)屬性,需通過(guò)類(lèi)提供的接口進(jìn)行訪問(wèn),不能用“from xxx import *”而導(dǎo)入;以雙下劃線(xiàn)開(kāi)頭的(__foo)代表類(lèi)的私有成員;以雙下劃線(xiàn)開(kāi)頭和結(jié)尾的(__foo__)代表python里特殊方法專(zhuān)用的標(biāo)識(shí),如 __init__()代表類(lèi)的構(gòu)造函數(shù)。
?
結(jié)論:
1、_xxx 不能用于’from module import *’ 以單下劃線(xiàn)開(kāi)頭的表示的是protected類(lèi)型的變量。即保護(hù)類(lèi)型只能允許其本身與子類(lèi)進(jìn)行訪問(wèn)。
2、__xxx 雙下劃線(xiàn)的表示的是私有類(lèi)型的變量。只能是允許這個(gè)類(lèi)本身進(jìn)行訪問(wèn)了。連子類(lèi)也不可以
3、__xxx___ 定義的是特列方法。像__init__之類(lèi)的
轉(zhuǎn)載于:https://blog.51cto.com/7625504/1747510
總結(jié)
以上是生活随笔為你收集整理的python 类里面的单下划线与双下划线的区别(私有和保护) .的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 给 c# 程序员的十个重要提示
- 下一篇: Tyvj P1463 智商问题 分块