2012-10-12 167 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

啊,谢谢,我在写完评论后想到了。感谢那 :) –