类型错误:类型“范围”不是可接受的基类型

问题描述

你能告诉我这段代码有什么问题吗?

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 (将#修改为@)

相关问答

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