如何注释返回 self 的 Python3 方法?

问题描述 投票:0回答:2

函数注释: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 python-typing method-chaining
2个回答
6
投票

从 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

0
投票

你可以这样做:

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'

© www.soinside.com 2019 - 2024. All rights reserved.