考虑代码:
def foo() -> ??:
return bar()
我怎么能说我希望返回类型与foo
返回类型相同bar()
?
在 C++decltype
中,我可以使用以下内容:
auto foo() -> decltype(bar()) {
return bar();
}
我找不到 Python 的等价物。有没有?
考虑代码:
def foo() -> ??:
return bar()
我怎么能说我希望返回类型与foo
返回类型相同bar()
?
在 C++decltype
中,我可以使用以下内容:
auto foo() -> decltype(bar()) {
return bar();
}
我找不到 Python 的等价物。有没有?
如果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 的静态分析器倾向于这样做)。
Python 的内置类型库可以创建自定义类型,您可以描述一个新的类型类并将这两个函数与该类耦合作为返回值。