Правильный способ написания подсказок типа для ключей и предметов - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть некоторый код Python (работает на Python 3.5, 3.6 и 3.7) и добавлены некоторые подсказки типов для статических проверок типов с использованием mypy.

Пожалуйста, обратите внимание на следующий фрагмент:

class MyParams(Singleton, metaclass=MyParamsMeta):
    @classmethod
    def keys(cls):  # TODO -> type?
        return cls._params.keys()

    @classmethod
    def items(cls):  # TODO -> type?
        return cls._params.items()

    _params = _load_from_csv()  # returns Dict[str, MyParam]

Каковы правильные подсказки типа для def keys(cls) и def items(cls)?

1 Ответ

0 голосов
/ 04 апреля 2019

Вы можете использовать typing модуль

import typing

class MyParams(Singleton, metaclass=MyParamsMeta):
    @classmethod
    def keys(cls) -> typing.collections.KeysView:
        return cls._params.keys()

    @classmethod
    def items(cls) -> typing.collections.ItemsView:
        return cls._params.items()

    _params = _load_from_csv()  # returns Dict[str, MyParam]
...