python _、__、__xx__之間的差別

默認(rèn)情況下,Python中的成員函數(shù)和成員變量都是公開的(public),在python中沒有類public,private等關(guān)鍵詞來修飾成員函數(shù)和成員變量。其實(shí),Python并沒有真正的私有化支持,但可用下劃線得到偽私有。 盡量避免定義以下劃線開頭的變量!

 ?。?)_xxx      "單下劃線 " 開始的成員變量叫做保護(hù)變量,意思是只有類實(shí)例和子類實(shí)例能訪問到這些變量,需通過類提供的接口進(jìn)行訪問;不能用'from module import *'導(dǎo)入

 ?。?)__xxx    類中的私有變量/方法名 (Python的函數(shù)也是對(duì)象,所以成員方法稱為成員變量也行得通。)," 雙下劃線 " 開始的是私有成員,意思是只有類對(duì)象自己能訪問,連子類對(duì)象也不能訪問到這個(gè)數(shù)據(jù)。

 ?。?)__xxx__ 系統(tǒng)定義名字,前后均有一個(gè)“雙下劃線” 代表python里特殊方法專用的標(biāo)識(shí),如 __init__()代表類的構(gòu)造函數(shù)。

#-*- coding:utf-8 -*-

class A(object):

    def __init__(self):#系統(tǒng)定義方法

        self.string='A string'

        self._string='A _string'

        self.__string='A __string'#私有變量

    def fun(self):

        return self.string + ' fun-A'

    def _fun(self):

        return self._string+'  _fun-A'

    def __fun(self):#私有方法

        return self.__string+' __fun-A'

    def for__fun(self):#內(nèi)部調(diào)用私有方法

        return self.__fun()

class B(A):

    def __init__(self):#系統(tǒng)定義方法

        self.string = 'B string'

a=A()

print a.string

print a._string

# print a.__string 不可訪問

print a.fun()

print a._fun()

#print a.__fun() 不可訪問

print a.for__fun()

b=B()

print b.fun()

print b.fun().__len__()#系統(tǒng)定義函數(shù)


輸出:

A string

A _string

A string fun-A

A _string _fun-A

A __string __fun-A

B string fun-A

14

轉(zhuǎn)自:

https://www.cnblogs.com/ybf-yyj/p/9026588.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容