我正在尝试在Python中实现方法重载:class A: def stackoverflow(self): print 'first method' def stackoverflow(self, i): print 'second method', iob=A()ob.stackoverflow(2)但是输出是second method 2; 类似地:class A: def stackoverflow(self): print 'first method' def stackoverflow(self, i): print 'second method', iob=A()ob.stackoverflow()给Traceback (most recent call last): File "my.py", line 9, in <module> ob.stackoverflow()TypeError: stackoverflow() takes exactly 2 arguments (1 given)我该如何工作?
3 回答

青春有我
TA贡献1784条经验 获得超8个赞
它是方法重载而不是方法重写。而在Python中,您可以通过一个函数完成所有操作:
class A:
def stackoverflow(self, i='some_default_value'):
print 'only method'
ob=A()
ob.stackoverflow(2)
ob.stackoverflow()
在Python中,不能有两个具有相同名称的方法,而且也不需要。
请参阅Python教程的默认参数值部分。有关避免的常见错误,请参见“最少惊讶”和“可变默认参数 ”。
编辑:有关Python 3.4中新的单调度通用功能的信息,请参见PEP 443。
添加回答
举报
0/150
提交
取消