在python中实现重载函数而不使用条件语句的最佳方法是什么?
在我的应用程序中,我有一个要求,即我需要使用相同的名称调用一个方法,但使用不同的数字参数和实现。另外,我不想添加任何条件语句来检查接收到的参数并执行所需的实现。这将是直接的,如java,C++的语言,其中函数重载是可能的。p> 我研究了提供这种支持的python包,但是应用程序依赖于这种外部库来处理用例似乎是一种开销 以下是我努力实现的目标:在python中实现重载函数而不使用条件语句的最佳方法是什么?,python,overloading,Python,Overloading,在我的应用程序中,我有一个要求,即我需要使用相同的名称调用一个方法,但使用不同的数字参数和实现。另外,我不想添加任何条件语句来检查接收到的参数并执行所需的实现。这将是直接的,如java,C++的语言,其中函数重载是可能的。p> 我研究了提供这种支持的python包,但是应用程序依赖于这种外部库来处理用例似乎是一种开销 以下是我努力实现的目标: def foo(x): do_something def foo(x,y): do_something_else 不执行以下操作: def
def foo(x):
do_something
def foo(x,y):
do_something_else
不执行以下操作:
def foo(x, y=None):
if not y:
do_something
else:
do_something_else
您可以为函数设置默认参数。这需要检查默认参数的值,这是我试图避免的。您还可以添加一个要求,即您不信任PyPI中的包进行生产工作,因为,例如,在列表中的第二个示例中,@Andriy drozduk声称“multi-method”不是线程安全的。您可以为函数设置默认参数。这需要检查默认参数的值,这是我试图避免的。您还可以添加一个要求,即您不信任PyPI中用于生产工作的包,因为,例如,在列表中的第二个示例中,@andriydrozduk声称“multimemethod”不是线程安全的。