python _、__、__xx__之間的差別
阿新 • • 發佈:2018-05-11
str 避免 rom object 方法名 成員方法 數據 都是 ini
默認情況下,Python中的成員函數和成員變量都是公開的(public),在python中沒有類public,private等關鍵詞來修飾成員函數和成員變量。其實,Python並沒有真正的私有化支持,但可用下劃線得到偽私有。 盡量避免定義以下劃線開頭的變量!
(1)_xxx "單下劃線 " 開始的成員變量叫做保護變量,意思是只有類實例和子類實例能訪問到這些變量,需通過類提供的接口進行訪問;不能用‘from module import *‘導入
(2)__xxx 類中的私有變量/方法名 (Python的函數也是對象,所以成員方法稱為成員變量也行得通。)," 雙下劃線 " 開始的是私有成員,意思是只有類對象自己能訪問,連子類對象也不能訪問到這個數據。
(3)__xxx__ 系統定義名字,前後均有一個“雙下劃線” 代表python裏特殊方法專用的標識,如 __init__()代表類的構造函數。
#-*- coding:utf-8 -*- class A(object): def __init__(self):#系統定義方法 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):#內部調用私有方法 return self.__fun() class B(A): def __init__(self):#系統定義方法 self.string = ‘B string‘ a=A() print a.string printa._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__()#系統定義函數
輸出:
A string
A _string
A string fun-A
A _string _fun-A
A __string __fun-A
B string fun-A
14
python _、__、__xx__之間的差別