任何人都可以解释它有什么问题吗?我做错了什么?
>>> 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 :(得分:4)
您忘记了所有成员函数隐式地获取另一个参数,在Python中按惯例称为self
。
尝试:
class qw:
def f2x(self, par1, par2, par3):
print par1, par2, par3
但仍然像以前一样称呼它:
obj = qw()
obj.f2x("123", 13, "wert")
在f2x
中,self
是调用该成员的对象。这是你应该真正了解的一个非常基本的Python概念。
答案 1 :(得分:4)
您的类'实例方法定义中需要self
参数:
class qw:
def f2x(self, par1, par2, par3):
print par1, par2, par3
我建议您阅读一本初学Python教程/教程。 standard tutorial是不错的选择,特别是如果您已经掌握了另一种语言的经验。
然后你这样称呼它:
g = qw()
g.f2x('1', '2', '3')
答案 2 :(得分: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