2012-10-12 201 views
1

我不知道爲什麼即時得到消息錯誤類型錯誤:_ 初始化 _()到底需要3個參數(4給出)的代碼描述如下:傳遞參數的函數

class Worker(object): 
    def __init__(arg1,arg2,arg3): 
     self.arg1 = arg1 
     self.arg2 = arg2 
     self.arg3 = arg3 
    def some_function(self): 
     print "it works: " + arg1 + arg2 + arg3 

w=Worker("a","b","c") 
w.some_function() 

我可能會錯過什麼?

回答

6

應該def __init__(self, arg1,arg2,arg3):。您還需要在some_functionprint聲明改爲

print "it works: " + self.arg1 + self.arg2 + self.arg3 
1

任何類函數的第一個參數應該始終爲self

嗯,名字不重要,但這就是它的意思。

所以你的函數definintion應該像:

def __init__(self,arg1,arg2,arg3): 
    self.arg1 = arg1 
    self.arg2 = arg2 
    self.arg3 = arg3 
+1

這僅僅是一個類的實例的方法一樣。如果直接在類中使用方法,則不是:'Worker.some_function(self)'相當於'w.some_function()' –

+0

@MarkusUnterwaditzer,所以函數不應該定義爲'def __init __(self,arg1,arg2 ,arg3)'? – TZHX

+0

他們應該。我只是說,因爲你說所有方法都是如此。還有一些不採用自我論證的類方法。 –

4
def __init__(self,arg1,arg2,arg3): 
+0

更新後與您的消化,im有: NameError:全局名稱'arg1'未定義。我應該設置全局arg1,arg2,arg3嗎? –

+3

@Thales見布萊爾的答案。 –

+0

啊,謝謝,我在寫完評論後想到了。感謝那 :) –