多方法联合类型不正确支持重载

问题描述

我正在使用multimethod包(1.4)重载方法。我需要将联合类型(或TypeVar)作为输入类型;但是,这会引起问题。示例:

from typing import Union
from multimethod import multimethod


@multimethod
def func(x: int):
    print(x)

@multimethod
def func(x: int,y: int):
    print(x,y)

func(1)
func(2,3)

这很好,并且可以输出

1
2 3

符合预期。但是,此代码崩溃:

from typing import Union
from multimethod import multimethod


@multimethod
def func(x: int):
    print(x)

@multimethod
def func(x: Union[int,float],3)

输出

1
Traceback (most recent call last):
  File "C:\Users\...\testing.py",line 14,in <module>
    func(2,3)
  File "C:\Users\...\.conda\envs\...\lib\site-packages\multimethod\__init__.py",line 184,in __call__
    return self[tuple(map(self.get_type,args))](*args,**kwargs)
TypeError: func() takes 1 positional argument but 2 were given

有没有一种方法可以使联合类型的参量数目不同?谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...