如何输入提示实现`__call__`方法的类型?

时间:2017-05-07 16:34:02

标签: python pycharm type-hinting

我在Python 2.7中试验PEP 0484 type hinting。在大多数情况下,它非常简单,但我偶然发现了以下功能。我试过了:

from typing import TypeVar, Type, Callable, Union, Dict

T = TypeVar('T')

def ensure_cls(cls):
    # type: (Type[T]) -> Callable[[Union[T, Dict]], T]
    """
    If the argument is an instance of cls, pass, else try constructing.
    """

    def converter(val):
        # type: (Union[T, Dict]) -> T
        if isinstance(val, cls):
            return val
        else:
            return cls(**val)  # 'cls' is not callable

    return converter

PyCharm(2017.1.2)抱怨'cls'无法赎回。这可能是PyCharm检查的误报,但另一方面,PyCharm确实有一点:并非所有类型都可以调用。

也许有更好的方法来输入提示这个函数并指定cls实际上是一个可调用的类型?

在函数上面输入提示的推荐方法是什么?

0 个答案:

没有答案