如何解决多方法联合类型不正确支持重载
我正在使用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 举报,一经查实,本站将立刻删除。