2012-04-24 73 views
2

请原谅我的无知,我是Python的新手,我似乎无法在Google上找到答案。也许我只是没有搜索正确的关键字。Python TypeError with * args

我有一个基本的功能如下:

class Basic(object): 
    def Process(*values): 
     for i in range(len(values)): 
      value = int(values[i]) 
      print value 

b = Basic() 
b.Process(4, 5, 6) 

,我发现了以下错误:

TypeError: int() argument must be a string or a number, not 'Basic'

我敢肯定,这是简单的东西,但任何帮助,将不胜感激。

感谢

+1

这意味着它的意思:传递给'int'的东西是'Basic'实例,而不是字符串或数字。这是为什么?那么,看看int调用了什么,以及这些值来自哪里......顺便说一下,请不要在范围(len(values))中写下这个':'废话。你正在竭尽全力为自己努力工作。直接迭代:'为了价值:'。 – 2012-04-24 22:56:37

+0

谢谢,我还在学习。我是一名c#程序员......所以我对开发更好的Python编程方法非常开放。欣赏它。 – CodeLikeBeaker 2012-04-25 01:47:29

回答

5

你忘了给self作为参数传递给过程:

def Process(self, *values): 
+0

啊哈!非常感谢。我会在11分钟内接受它让我的:) – CodeLikeBeaker 2012-04-24 21:23:11

1

权,自我。实例方法应该小一些,不应该写成类:http://www.youtube.com/watch?v=o9pEzgHorH0(因为我已经在写这个答案)。

class Basic(object): 

    def process(self, *values): 
     for v in values: 
      v = int(v) 
      print v 

b = Basic() 
b.process(4, 5, 6)