这就是我想要实现的目标:
# first way to call. key value pair, where value could be anything.
def multiple_ways_to_call(key_param, value_param, optional = "optional"):
pass
# second way to call. object_param is an instance of a specific class. type(object_param) == "myclass"
def multiple_ways_to_call(object_param, optional = "optional"):
pass
我知道实际上不支持函数重载。我之前只是通过检查最后一个参数是否为null来完成它,但是我现在不知道如何使用可选参数。
我该如何处理这种情况?我只是对调用者不可见的区别。
答案 0 :(得分:0)
在Python 3.4中添加了@singledispatch
模块中的functools
装饰器 - 请参阅Python Single Dispatch。
如果您使用的是早期版本的Python,则会将其移植到is available on PYPI。
@singledispatch
仅根据赋予函数的第一个参数的类型进行区分,因此它不像其他语言那样灵活。
文档示例:
from functools import singledispatch
@singledispatch
def fun(arg, verbose=False):
if verbose:
print("Let me just say,", end=" ")
print(arg)
@fun.register(int)
def _(arg, verbose=False):
if verbose:
print("Strength in numbers, eh?", end=" ")
print(arg)
@fun.register(list)
def _(arg, verbose=False):
if verbose:
print("Enumerate this:")
for i, elem in enumerate(arg):
print(i, elem)