【发布时间】:2015-11-18 07:28:19
【问题描述】:
class testClass(object):
def test1(self):
print "1"
def test1(self):
print "2"
def test1(self):
print "3"
这是一个包含三个方法的类,它们都具有相同的名称(甚至相同的签名)
当我这样称呼时:
tc = testClass()
tc.test1()
它没有抛出任何错误,而是简单地打印3。
再举一个例子:
class testClass(object):
def test1(self, a, b):
print "1"
def test1(self, a):
print "2"
def test1(self, a, b, c):
print "3"
如果我再次调用tc.test1(),它会引发异常:
TypeError: test1() takes exactly 4 arguments (1 given)
那么我可以假设在这些情况下它总是会执行类中定义的最后一个方法吗?
PS:我对文件中的各个函数进行了相同的尝试,得到了相同的结果,它执行了最后一个函数。
【问题讨论】:
-
Python 不是 Java。 Five-minute Multimethods in Python.
-
你替换了一个录音函数,因此最后执行。对于未指定数量的参数,请阅读 *args 和 **kwargs
标签: python python-2.7 python-3.x overloading