1

コードの明瞭さを向上させるために型注釈を使用しようとしています。次のコードは、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 を使用しています。

4

1 に答える 1