我正在尝试使用类型注释来提高我的代码清晰度。以下代码在 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
没有显示任何错误。
有没有办法让 PyCharm 增强它的冷静,明白一切都很好?还是我误解了某些东西并且 mypy 给出了误报?
这是在 Ubuntu 16.10 上使用 Python 3.6.0 和 mypy-0.501。