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

时间:2012-04-18 05:21:06

标签: python

  

可能重复:
  How do I use method overloading in Python?

我是python编程的新手,我喜欢编写多个具有相同名称的方法,但为什么只有最近调用的方法才能打印?代码如下

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

o / p为second method

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

由于 Mukthyar

1 个答案:

答案 0 :(得分:1)

在这里讨论:

Python function overloading

在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将为我们引发异常。

相关问题