返回类的声明类型,在PyCharm中给出错误

时间:2017-03-21 17:18:21

标签: python pycharm python-3.6 mypy

我正在尝试使用类型注释来提高代码清晰度。以下代码在PyCharm Community Edition 2016.3.3中出现错误:

#!python
import typing


class MyClass:
    def __init__(self, name: str) -> None:
        self.name = name


backends: typing.Mapping[str, typing.Type[MyClass]] = {
    'local': MyClass
}


def get_backend(backend_name: str) -> typing.Type[MyClass]:
    return backends[backend_name]


def create_instance(name) -> MyClass:
    backend_cls = get_backend('local')

    # Here PyCharm highlights "backend_cls(name)" as in error:
    return backend_cls(name)


if __name__ == '__main__':
    instance = create_instance('hey')
    print(f'Name is: {instance.name}')

PyCharm在backend_cls(name)表达式中突出显示错误,并且读取'Type'对象不可调用。但是,代码运行正常,甚至mypy thisexample.py也没有显示任何错误。

有没有办法让PyCharm增强其冷静,并了解一切都很好?或者我是否误解了某些东西并且是假装误报了?

这是在Ubuntu 16.10上使用Python 3.6.0和mypy-0.501。

1 个答案:

答案 0 :(得分:3)

typing.Type支持将在PyCharm 2017.1中添加,将于本周发布。您可以在此处获取预发布版本:https://www.jetbrains.com/pycharm/nextversion/