在python编程中覆盖具有相同名称的方法

override methods with same name in python programming

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How do I use method overloading in Python?

我不熟悉Python编程,我喜欢用相同的名称编写多个方法,但是为什么只打印最近被称为的方法呢?代码如下

1
2
3
4
5
6
7
class A:    
    def mymethod(self):    
        print 'first method'    
    def mymethod(self):    
        print 'second method'
ob=A()
ob.mymethod()

O/P为second method

请告诉我这个python方法调用背后的机制是什么。我可以同时调用两个同名的方法吗?

谢谢圣女座


在此讨论:

python函数重载

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

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

下面是一个简单的例子:

1
2
3
4
5
6
7
8
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将为我们引发异常。