在Python编程中覆盖具有相同名称的方法[重复]
Posted
技术标签:
【中文标题】在Python编程中覆盖具有相同名称的方法[重复]【英文标题】:Override methods with same name in Python programming [duplicate] 【发布时间】:2012-04-29 12:03:33 【问题描述】:可能重复: 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()
输出为second method
。
这个 Python 方法调用背后的机制是什么?可以同时调用两个同名方法吗?
【问题讨论】:
你不能有多个同名的方法。我们刚刚在另一个问题中回答了这个问题。如果这不是您想要做的,请更清楚地描述您的问题。 哇Mukthyar。你应该知道的事情……这些大师甚至在上厕所时也会阅读每一篇文章。你不能在这里偷偷问任何人重复的问题。 @agf,这似乎比第一个问题更糟糕 - 这里的方法甚至没有不同的签名 嗨 jdi 重复问题也是我自己写的,在编程的学习阶段,我们无法判断好坏。这些问题将清除编程中的疑问。 【参考方案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 会为我们抛出异常。
【讨论】:
以上是关于在Python编程中覆盖具有相同名称的方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章