我想在 Python 中使用重载。我知道这在设计上是不可能的(Python 是动态类型语言),关于这个主题有很好的线程 here。这就是为什么我可以使用多分派(multimethods)之类的东西。我正在考虑最好的解决方案,它可以为任何函数或类方法实现多重分派。 Python 中是否有本机包含的解决方案?
在我的情况下,使用 singledispatch(在 3.4 中添加到 Python 中)是不够的(因为只考虑第一个参数的类型,我需要 multiple)。
我也知道我可以使用关键字参数(即具有单个函数并通过检查所有参数来驱动行为),但是当您有很多参数和组合时,它会变得复杂。
到目前为止,我能够找到这两个库(未包含在 Python 标准库中):
基本用法如下:
multimeta
或
from multimethod import multimethod
@multimethod
def add(x: int, y: int):
...
@multimethod
def add(x: str, y: str):
...
这个功能看起来很相似。
我主要有两个问题: