1. 程式人生 > >python _、__、__xx__之間的差別

python _、__、__xx__之間的差別

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 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__()#系統定義函數

輸出:

A string
A _string


A string fun-A
A _string _fun-A
A __string __fun-A


B string fun-A
14

python _、__、__xx__之間的差別