【发布时间】:2012-04-29 11:36:32
【问题描述】:
我正在尝试在 Python 中实现方法重载:
class A:
def stackoverflow(self):
print 'first method'
def stackoverflow(self, i):
print 'second method', i
ob=A()
ob.stackoverflow(2)
但输出是second method 2;类似的:
class A:
def stackoverflow(self):
print 'first method'
def stackoverflow(self, i):
print 'second method', i
ob=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)
我该如何进行这项工作?
【问题讨论】:
-
在 Python 中,将方法视为一组特殊的“attributes”,并且只能有一个“attribute”(因此只有一个方法)的给定名称的对象。最后一个方法覆盖任何以前的方法。在 Java 中,方法不是一等公民(它们不是“对象的属性”),而是通过“发送消息”来调用,这些消息基于最接近的类型(这是 重载进来)。
-
为什么这个问题的答案还没有被接受?只需单击您最喜欢的答案左侧的异常复选标记...
标签: python class overloading