1. 程式人生 > >論參數self

論參數self

當前 默認 報錯 IT 為什麽 無法 ini 否則 設計者

當一個對象添加了一個方法,並且此方法的第一個參數為self,或者其他任意名稱的時候(只要不為空即可),則此參數指代的是某個對象。當此對象調用此方法時,傳遞的這第一個參數可以是任意對象,可以是他的對象,甚至可以他本身。但當是此對象的對象在調用該方法時,該參數已經默認了指代的是當前這個對象的對象(這是python設計者的設計,沒為什麽),在調用的時候不能顯氏的傳遞給此參數任何值,否則會報錯(因為此參數已經有值,此值為調用者本身)

舉個例子:

 1 class a:
 2     pass
 3 
 4 
 5 def fuc(sel):
 6     print (sel.arg)
 7 
 8
9 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 29
aa.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