コードの明瞭さを向上させるために型注釈を使用しようとしています。次のコードは、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}')
backend_cls(name)
エラーは式でPyCharm によって強調表示され、'Type' object is not callableと表示されます。ただし、コードは正常に実行され、mypy thisexample.py
エラーはまったく表示されません。
PyCharm がその落ち着きを高め、すべてがうまくいっていることを理解させる方法はありますか? それとも、何かを誤解していて、mypy が誤検知を与えているのでしょうか?
これは、Ubuntu 16.10 で Python 3.6.0 と mypy-0.501 を使用しています。