我正在寻找C++中的decltype的某种类比。我的目标是:
def f(a: int) -> List[Tuple(int, float)]
def g(a: List[int]) -> List[decltype(f)]
因此,这个想法是使用另一个函数的类型注释。我找到的解决方案看起来有些笨拙:
def g(a: List[int])->f.__annotations__['return']
基本上,问题是是否存在像 decltype 这样的东西(也许它应该被称为“返回类型”),或者在以后的版本中是否有计划。我还编写了一个小函数,说明了可能使用此功能的情况:
def return_type(f: Callable):
try:
return get_type_hints(f)['return']
except(KeyError, AttributeError):
return Any
def g() -> return_type(f):
UPD根据Jim Fasarakis-Hilliard的建议,我们也可以使用get_type_hints替代annotations
def decltype(function): return function.__annotations__['return']
? :) - cowbert