【问题标题】:Type declaration for returning a class, gives error in PyCharm返回类的类型声明,在 PyCharm 中给出错误
【发布时间】:2017-03-21 17:18:21
【问题描述】:

我正在尝试使用类型注释来提高我的代码清晰度。以下代码在 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' object is not callable。但是,代码运行良好,甚至 mypy thisexample.py 也没有显示任何错误。

有没有办法让 PyC​​harm 增强它的冷静,明白一切都很好?还是我误解了某些东西并且 mypy 给出了误报?

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

【问题讨论】:

    标签: python pycharm python-3.6 mypy


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多