我是python的新手。但我知道方法重载。但我对python中的重载感到困惑。这是我的混淆代码,
class OverLoad(object):
"""docstring for OverLoad"""
def __init__(self, arg):
super(OverLoad, self).__init__()
self.arg = arg
def adder(a, b):
print a,b
def adder(*a):
print a
def adder(a):
print a
def adder():
print "no arg"
请解释上面的代码。
答案 0 :(得分:1)
Python样式的重载:
def adder(self, *arg, **kwd):
你可以致电:
some_class.adder(1, 2)
some_class.adder(1, 2, 3, 4, 5, 6, 7, 9, 10 ....)
some_class.adder(1, 2, 3, 4, arg1=5, arg2=6, arg3=7)
some_class.adder(arg1=1, arg2=2, arg3=3)
但很可能是你的变种:
def adder(self, *arg):
if len(arg) == 0:
print "no arg"
return sum(arg)
并致电:
some_class.adder(1,2,3,4,5,7,8,9,10)
答案 1 :(得分:0)
Python不支持方法重载。
请参阅此doc。在类中定义方法时,Python首先创建一个函数对象,然后绑定函数对象和您定义的函数名。因此,在您的代码示例中,只有最后一个 adder()函数生效。