函数注释:PEP-3107
背景:我是 Linux 上使用 CPython 3.4x 的 PyCharm 用户。 我发现它有助于注释函数参数和返回类型。 当我使用这些方法时,IDE 可以更好地提示。
问题:对于自链方法,如何注释方法返回值? 如果我使用类名,Python 在编译时会抛出异常:
NameError: name 'X' is not defined
示例代码:
class X:
def yaya(self, x: int):
# Do stuff here
pass
def chained_yaya(self, x: int) -> X:
# Do stuff here
return self
作为一个技巧,如果我将
X = None
放在类声明之前,它就会起作用。 然而,我不知道这种技术是否会产生不可预见的负面副作用。
从 Python 3.11 开始,您将能够使用
Self
来注释返回类型:
from typing import Self
class X:
def yaya(self, x: int):
# Do stuff here
pass
def chained_yaya(self, x: int) -> Self:
# Do stuff here
return self
你可以这样做:
class X:
pass
class X:
def yaya(self, x: int):
# Do stuff here
pass
def chained_yaya(self, x: int) -> X:
# Do stuff here
return self
在您的代码中,直到类定义完成才定义 X。
同样的问题:将当前类作为返回类型注释
他的解决方案是使用一根绳子。在你的代码中,这将是 -> 'X'