我有一个班有这两种方法:
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
答案 0 :(得分:0)
Python不支持方法重载。最后定义的方法将覆盖之前定义的具有相同名称的所有方法。
但是,您可以使用Multi Method模式来实现此目的。请参阅Guido's post
答案 1 :(得分:0)
您正在尝试重载方法。 whatIsYourName(self)
正在覆盖whatIsYourName(sel,name)
。如果您是C ++ / Java程序员,这对您来说可能听起来很正常,但不幸的是,它与Python不同。如果要显示名称,请尝试在构造函数中定义它并打印它。