IntelliJ IDEA&x27;s Python类型检查器-预期类型不正确?

IntelliJ IDEA&x27;s Python类型检查器-预期类型不正确?,python,intellij-idea,Python,Intellij Idea,在以下代码中: from typing import List def test() -> List[str]: ret = ["Hi", "Hi"] return ret 我在函数定义行收到以下警告: Expected type 'Integral", got 'str' instead 我看不出IntelliJ IDEA的python模块为什么会将这个简单函数解释为返回整型列表而不是str。这是一个类型检查器错误吗?Pycharm只对类型提示有一些初步的支持。注意,

在以下代码中:

from typing import List
def test() -> List[str]:
    ret = ["Hi", "Hi"]
    return ret
我在函数定义行收到以下警告:

Expected type 'Integral", got 'str' instead

我看不出IntelliJ IDEA的python模块为什么会将这个简单函数解释为返回整型列表而不是str。这是一个类型检查器错误吗?

Pycharm只对类型提示有一些初步的支持。

注意,
typing.list
是一个简单的包装类,它扩展了内置的
列表
类。它有助于类型暗示,并且不允许使用自身创建
new
列表

以下是键入的当前代码。列表:

class List(list, MutableSequence[T], extra=list):

    __slots__ = ()

    def __new__(cls, *args, **kwds):
        if _geqv(cls, List):
            raise TypeError("Type List cannot be instantiated; "
                            "use list() instead")
        return _generic_new(list, cls, *args, **kwds)
通过执行
typing.List[str]
,您试图调用对象
typing.List
(这是一种类型)上的方法
\uuu getitem\uuu
。还要注意

这意味着:

typing.List.__getitem__(str)
# or
list.__getitem__(str)
现在,如果您看到,列表索引方法期望的是什么,它期望的是一个整数,比如
a[0],a[1]
。在这种情况下,它接收的不是像
0,1
那样的
int
,而是类型
str


希望这能让你对
键入.List

有一个更全面的了解,我认为错误来自
List[str]
本身,而不是函数的返回-什么是
键入.List
?它是mypy的一部分,允许对Python进行类型检查;但是,如果您使用python的标准列表(小写),如在def test()->list[str]中,您会得到与str完全相同的错误。当您说“error”时,您是指python错误还是PyCharm的警告?想必后者根本不起作用,因为
list[str]
。请注意,例如,“PyCharm 4.5 EAP构建对PEP 484有初步支持,因为此PEP尚未最终确定”(),因此,如果它尚未完全运行,您不必太惊讶。这是一个警告;我刚刚更新了我的问题,谢谢你跟我澄清。我并没有意识到这是实验性的,所以我将暂时禁用它,除非有任何其他建议。这应该通过PyCharm的最新版本来解决,它支持对这些类型进行更深入/更智能的分析和理解。