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

时间:2014-11-16 05:37:28

标签: python-3.x annotations method-chaining

功能注释:PEP-3107

背景:我是Linux上的PyCharm用户w / CPython 3.4x。我发现注释函数参数和返回类型会有所帮助。当我使用这些方法时,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,它就可以了。但是,我不知道这种技术是否存在不可预见的负面影响。

1 个答案:

答案 0 :(得分: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.

此处的问题相同:putting current class as return type annotation

他的解决方案是使用字符串。在你的代码中将是 - > 'X'