如何在Iron Python中使用重载?

时间:2013-10-09 08:40:30

标签: python overloading ironpython

我想在Iron Python中使用重载但看起来它不起作用:

import sys
import clr

def  af(a, b):
     c = a+b
     print c
     return c
def af(j):
  y = j*j
  print y
  return y

 af(6,7)
 af(5)

我收到错误= \ 有没有办法使用重载? 我的目的是编写一个函数:foo(doAction,numTimes) 默认情况下,如果我使用foo(action):它会执行一次,  或者我会写:foo(action,6)

非常感谢!!!

1 个答案:

答案 0 :(得分:1)

IronPython可能会在CLR上运行,但这不会使它成为C#。在任何类型的Python中,您只能定义一次函数。定义一个函数实际上只是分配一个名称,所以在你的代码中你将一个函数分配给af,然后将另一个函数分配给同一个名字,所以第一个就被丢弃了。

在Python中执行此操作的方法是使用默认参数:

def aj(a, b=None):
    if b is not None:
        result = a + b
    else:
        result = a * a
    print result
    return result

对于您的实际使用情况,您当然可以定义numtimes,默认值为1:

def foo(action, numtimes=1):
    # whatever