类型错误:“ABCMeta”对象不可订阅

She*_*ang 7 python-3.x

这是我的代码:

from collecionts.abc import Sequence
from typing import TypeVar

T = TypeVar('T')
def first(a: Sequence[T]) -> T:
    return a[0]
Run Code Online (Sandbox Code Playgroud)

根据我的理解,我可以将任何类似序列的对象作为参数传递给first函数,例如:

first([1,2,3])
Run Code Online (Sandbox Code Playgroud)

它返回1

但是,它会引发 TypeError:' ABCMeta' 对象不可订阅。这里发生了什么?我怎样才能让它工作,我有一个使用typing模块的函数,它可以采用第一个元素,无论其类型是什么?

更新

如果我使用,它运行得很好,和from typing import Sequence之间有什么区别from collections.abc import Sequencefrom typing import Sequence

小智 2

两件事情。

第一个是,如果您传递的参数不符合您指定的类型,则类型模块不会在运行时引发错误。打字模块有助于总体清晰度和智能感知或类似的东西。

关于您遇到的错误可能是由于您使用的python版本所致。尝试升级到 python >= 3.9