考虑代码:
def foo() -> ??:
return bar()
我怎么能说我希望foo
的返回类型与bar()
的返回类型相同?
在C ++中,我可以使用decltype
,类似于:
auto foo() -> decltype(bar()) {
return bar();
}
我找不到Python的等效版本。有吗?
答案 0 :(得分:4)
如果定义了bar
,则可以访问其签名
In [1] from inspect import signature
In [2]: def bar(a: int) -> float:
...: return float(a)
...:
In [3]: def foo(a: int) -> signature(bar).return_annotation:
...: return bar(a)
...:
In [4]: signature(foo)
Out[4]: <Signature (a: int) -> float>
话虽这么说,但我不确定您是否需要进行静态类型检查,因为foo
的返回类型可以从bar
的类型(至少是PyCharm的静态类型)中推断出来分析仪倾向于这样做)。
答案 1 :(得分:0)
Python的内置类型库可创建custom types,您可以描述一个新的类型类并将这两个函数与该类耦合在一起作为返回值。