2012-04-24 91 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)