python 修飾符 python訪問修飾符

2021-10-11 19:28:47 字數 1854 閱讀 1193

許可權訪問(偽許可權,只是壓縮時按規則換了變數名,python 的哲學是假定使用者都會使用)

_xx 以單下劃線開頭的表示的是protected型別的變數。即保護型別只能允許其本身與子類進行訪問。若內部變數標示,如: 當使用「from m import」時,不會將以乙個下劃線開頭的物件引入 (成俗約定,不做限制)。

__xx 雙下劃線的表示的是私有型別的變數(private)。只能允許這個類本身進行訪問了,連子類也不可以用於命名乙個類屬性(類變數),呼叫時名字被改變(在類foobar內部,__boo變成_foobar__boo,如self._foobar__boo)

__xx__定義的是特列方法。使用者控制的命名空間內的變數或是屬性,如init , __import__或是file 。只有當文件有說明時使用,不要自己定義這類變數。 (就是說這些是python內部定義的變數名)

##例class a:

__age = 18

print(dir(a()))

print(a()._a__age)

列印['_a__age', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']

__age變數名稱被壓縮成_a__age,外部使用該名稱呼叫即可

class a:

def __fn(self):

print(self.name)

class b(a):

def pp(self, name):

self.name=name

# def _a__fn():

# print(self.name)

b=b()

b.pp('321')

print(dir(b)) #列印b例項的屬性與方法

b._a__fn()

列印['_a__fn', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name', 'pp']

可看出a類的fn()已被b類以新的名稱(_a__fn)繼承過來

實際相當於

class a:

def __fn(self):

print(self.name)

class b(a):

def pp(self, name):

self.name=name

def _a__fn(self):

print(self.name)

b=b()

b.pp('321')

print(dir(b))

b._a__fn()

python 修飾符 python 修飾符

修飾符基礎 閉包 什麼是閉包呢?標準的概念大家可以看wikipedia上的解釋 舉個例子 def do add base def add increase return base increase return add do add函式裡巢狀了乙個內層函式add,這個內層函式就是乙個閉包,其實可以也...

python修飾符用法 python修飾符

乾貨大禮包!21天帶你輕鬆學python 文末領取更多福利 本課程來自於千鋒教育在阿里雲開發者社群學習中心上線課程 python入門2020最新大課 主講人姜偉。21天帶你輕鬆學python python 是乙個高層次的結合了解釋性 編譯性 互動性和物件導向的指令碼語言。大資料 人工智慧時代首選程式...

python 函式修飾符

def log func print log開始 func print log結束 如果log函式返回乙個字串,test就是乙個字串了 print test 輸出 log開始 test log結束 可見,test函式被替換了,但是其 name 屬性也變了。替換以後函式的一些屬性改變了,如 name ...