我在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实际上是一个可调用的类型?
在函数上面输入提示的推荐方法是什么?