論參數self
阿新 • • 發佈:2018-04-07
當前 默認 報錯 IT 為什麽 無法 ini 否則 設計者
當一個對象添加了一個方法,並且此方法的第一個參數為self,或者其他任意名稱的時候(只要不為空即可),則此參數指代的是某個對象。當此對象調用此方法時,傳遞的這第一個參數可以是任意對象,可以是他的對象,甚至可以他本身。但當是此對象的對象在調用該方法時,該參數已經默認了指代的是當前這個對象的對象(這是python設計者的設計,沒為什麽),在調用的時候不能顯氏的傳遞給此參數任何值,否則會報錯(因為此參數已經有值,此值為調用者本身)
舉個例子:
1 class a: 2 pass 3 4 5 def fuc(sel): 6 print (sel.arg) 7 89 class b: 10 arg = 1 11 def __init__(self,arg): 12 self.arg=arg 13 bb=b(2) 14 15 16 a.fuc=fuc#a對象添加fuc方法,sel參數可為任意對象 17 a.fuc(b) 18 a.fuc(bb) 19 20 a.arg=3 21 a.fuc(a)#甚至可以是他本身,也可以是他的對象aa 22 23 24 #但是,當此對象的對象調用該方法時,sel已經默認為調用者本身,不必也不能傳遞任何參數 25 26 aa=a() 27 aa.fuc() 28 aa.arg=5 29aa.fuc() 30 aa.fuc(aa)#報錯,不能傳遞任何參數
同樣:
class a: pass def fuc(sel) print ("ddd") aa=a() aa.fuc=fuc#對象aa添加方法fuc,aa在調用fuc時,必須傳遞參數,此參數可以是任意對象 aa.fuc(aa) aa.fuc()#報錯,沒給sel傳參,除非是aa的對象不用傳參,本例中aa不是類對象所以無法創建aa的對象
論參數self