How to overload a function in python?
本问题已经有最佳答案,请猛点这里访问。
在python中,我似乎无法重载以下函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #!/usr/bin/env python import subprocess def my_function (a) : subprocess.call(['proc', a]) return; def my_function (a, b) : subprocess.call(['proc','-i',a,b]) return; def my_function (a, b, c, d) : subprocess.call(['proc','-i',a,b,'-u',c,d]) return; |
例如,当我打电话给:
1 | mymodules.my_function("a","b") |
号
我得到:
1 2 3 4 | Traceback (most recent call last): File"sample.py", line 11, in <module> mymodules.my_function("a","b") TypeError: my_function() takes exactly 4 arguments (2 given) |
为什么它尝试调用接受4个参数的函数?
因为函数的重载在Python中不能像在其他语言中那样工作。
我会怎么做:
1 2 3 4 5 6 7 8 | def my_function (a, b=None, c=None, d=None) : if b is None: subprocess.call(['proc', a]) elif c is None: subprocess.call(['proc','-i',a,b]) else: subprocess.call(['proc','-i',a,b,'-u',c,d]) return; |
它将自动检测您输入的变量,并在默认情况下用"无"填充未输入的变量。当然,要使它工作,变量的值不能为none。