-4

可能重复:
如何在 Python 中使用方法重载?

我是 Python 编程新手,我喜欢编写多个同名的方法,但为什么只打印最近调用的方法?

代码如下:

class A:
    def mymethod(self):
        print 'first method'
    def mymethod(self):
        print 'second method'
ob = A()
ob.mymethod()

输出为second method.

这个 Python 方法调用背后的机制是什么?我可以同时调用两个同名的方法吗?

4

1 回答 1

2

在这里讨论:

Python函数重载

在 Python 中,函数是按名称查找的。参数的类型不是名称的一部分,也没有在任何地方声明。可以使用任何类型的参数调用该函数。

如果你使用“duck typing”来编写你的函数,你通常可以让一个函数完成你需要它完成的所有不同的工作。也经常使用具有默认值的参数,以允许使用不同数量的参数调用函数。

这是一个简单的例子:

class A(object):
    def __init__(self, value=0.0):
        self.value = float(value)

a = A()  # a.value == 0.0
b = A(2)  # b.value == 2.0
c = A('3')  # c.value = 3.0
d = A(None)  # raises TypeError because None does not convert to float

在此示例中,我们需要一个浮点值。但是我们不测试参数的类型;我们只是强迫它浮动,如果它有效,我们很高兴。如果类型错误,Python 会为我们抛出异常。

于 2012-04-18T05:31:09.383 回答