2010-10-28 43 views
1

任何人都可以請解釋它有什麼問題嗎?難道我做錯了什麼 ?python:提供的參數太多

>>> class qw: 
...  def f2x(par1, par2, par3): 
...    print par1, par2, par3 
... 
>>> obj = qw() 
>>> obj.f2x("123", 13, "wert") Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
TypeError: f2x() takes exactly 3 arguments (4 given) 
>>> 

,如果我將定義只是一個功能,這是所有工作的罰款

>>> def f2x(par1, par2, par3): 
...  print par1, par2, par3 
... 
>>> f2x("1", 2, "too many") 
1 2 too many 
>>> 
+0

你已經'self'作爲第一個參數之前或之後回答你的函數聲明一起來到這個題?你還有問題嗎? – 2010-10-28 16:17:06

+0

請問您可以將問題編輯回原來的格式,以便回覆有意義嗎? – 2010-10-28 16:24:12

回答

2

我猜是因爲Python類對象的每一個方法的其隱含有一個指向對象本身第一個參數中。

嘗試

def f2x(self, par1, par2, par3): 

你還是你的3個自定義參數,調用它

>>> class qw: 
...  def f2x(self, p1, p2, p3): 
...    print p1,p2,p3 
... 
>>> o = qw() 
>>> o.f2x(1,2,3) 
1 2 3 
+0

謝謝大家的回答,解決的問題 – m1k3y3 2010-10-28 16:18:28

+0

我覺得你的意思是'明確'嗎? – 2010-10-28 22:15:51

4

你忘了所有的成員函數得到另一種說法暗示,這在Python被稱爲按照慣例self

嘗試:

class qw: 
    def f2x(self, par1, par2, par3): 
    print par1, par2, par3 

但仍然可以調用它像以前一樣:

obj = qw() 
obj.f2x("123", 13, "wert") 

f2xself是在其成員被調用的對象。這是您應該真正瞭解的Python的一個非常基本的概念。

4

您需要self參數在類的實例方法的定義:

class qw: 
    def f2x(self, par1, par2, par3): 
     print par1, par2, par3 

我建議你通過一個初學者Python書籍/教程去。 standard tutorial是不錯的選擇,尤其是如果你已經有一些其他語言的經驗。

然後調用它像這樣:

g = qw() 
g.f2x('1', '2', '3') 
+0

@ m1k3y02:你在用什麼python?在添加self參數後,它在我的機器上運行良好。 – 2010-10-28 16:13:09

+0

2.6.5,重新進入python命令行後全部開始工作,因爲它應該是,謝謝你的幫助 – m1k3y3 2010-10-28 16:21:12