python中單下劃線(_)和雙下劃線(__)的特殊用法
函數使用單下劃線_開頭
使用單下劃線(_)開頭的函數_func不能被模塊外部以: from module import *形式導入。
但可以用:from module import _func形式單獨導入。
類屬性和類方法使用單下劃線_開頭
_開頭為保護類型的屬性和方法,僅允許類內部和子類訪問,類實例無法訪問此屬性和方法。
類屬性和類方法使用雙下劃線__開頭
__開頭為私有類型屬性和方法,僅允許類內部訪問,類實例和派生類均不能訪問此屬性和方法。
所以雙劃線比單劃線權限更嚴格。
補充說明
對于__開頭的屬性和方法如果派生類一定要訪問,使用單下劃線+基類名+雙下劃線開頭的屬性和方法的形式,
且雙下劃線開頭的屬性和方法后面最多只能以一個單下劃線結束,否則也無法訪問。
class BaseCls: def __init__(self, name, age, nick_name): self.name = name self.__nick_name_ = nick_name # __nick_name后面最多以一個_結束,否則通過基類名混淆的方式也無法訪問了。 self.age = age class SubCls(BaseCls): def __init__(self, name, age, addr, nick_name): super().__init__(name, age, nick_name) self.addr = addr self.a_nick_name = self._BaseCls__nick_name_
總結
以上所述是小編給大家介紹的python中單下劃線(_)和雙下劃線(__)的特殊用法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
相關文章
python ansible自動化運維工具執(zhí)行流程
ansible是基于 paramiko 開發(fā)的,并且基于模塊化工作,本身沒有批量部署的能力,接下來通過本文給大家分享python ansible自動化運維工具的特點及執(zhí)行流程,感興趣的朋友跟隨小編一起看看吧2021-06-06