调用函数时出现Python错误

时间:2014-01-24 08:41:02

标签: python-2.7

我有一个班有这两种方法:

  def whatIsYourName(self):
        print 'my name is class A'
    def whatIsYourName(self, name):
        print 'my name is {0}, I am class A'.format(name)

我可以打电话给第二个。但是,当我打电话给第一个这样的人时:

x = myClass()
x.whatIsYourName()

我收到了这个错误:

Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
TypeError: whatIsYourName() takes exactly 2 arguments (1 given)

我正在使用python 2.7

2 个答案:

答案 0 :(得分:0)

Python不支持方法重载。最后定义的方法将覆盖之前定义的具有相同名称的所有方法。

但是,您可以使用Multi Method模式来实现此目的。请参阅Guido's post

答案 1 :(得分:0)

您正在尝试重载方法。 whatIsYourName(self)正在覆盖whatIsYourName(sel,name)。如果您是C ++ / Java程序员,这对您来说可能听起来很正常,但不幸的是,它与Python不同。如果要显示名称,请尝试在构造函数中定义它并打印它。