如何解决类型错误:类型“范围”不是可接受的基类型
你能告诉我这段代码有什么问题吗?
from multimethod import multimethod
from typing import Iterable
@multimethod
def foo(x: Iterable[Iterable]):
print(x)
@multimethod
def foo(x):
print(x)
foo([range(1),range(2)])
我得到的错误是:
TypeError: type 'range' is not an acceptable base type
有趣的是,这些片段确实有效:
from multimethod import multimethod
@multimethod
def foo(x):
print(x)
foo([range(1),range(2)])
或
from multimethod import multimethod
from typing import Iterable
@multimethod
def foo(x: Iterable):
print(x)
@multimethod
def foo(x):
print(x)
foo([range(1),range(2)])
作为一点上下文,我想要做的是建立一个层次结构并根据 Iterable
持有的类型分派不同的函数:
from multimethod import multimethod
from typing import Generator,Iterable
import string
def gen(stop):
i = 0
for c in string.ascii_lowercase:
if i < stop:
i += 1
yield c
@multimethod
def bar(x: Iterable[range]):
print('bar(x: Iterable[range]')
@multimethod
def bar(x: Iterable[Generator]):
print('bar(x: Generator)')
@multimethod
def bar(x: Iterable[Iterable]):
print('bar(x: Iterable)')
#bar([range(1),range(2)])
bar([gen(2),gen(3)])
bar([[0,1,2],[0,2,3]])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。