python-3.x - 如何注释返回 self 的 Python3 方法?

标签 python-3.x annotations method-chaining

函数注释: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就在类声明之前,它起作用了。但是,我不知道这种技术是否有不可预见的负面影响。

最佳答案

你可以这样做:

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'

关于python-3.x - 如何注释返回 self 的 Python3 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26954173/

相关文章:

python - 在 Django 中定义 View 和 url。为什么不使用括号来调用函数?

python - 如何从不同目录中的 Python 脚本执行文件(导入其他模块)而不在文件中使用相对导入?

python - 如何在使用 PyQt5 打开新窗口时隐藏当前窗口

java - GWT AutoBean : annotation @PropertyName doesn't work anymore

javascript - 方法链可以像 Javascript 中内置函数的实现方式那样实现吗?

javascript - 为什么我的 'this' 没有在每个循环内部 jQuery 中更改上下文?

方法链的 Resharper 设置

python - 对 df 进行排序以获得两列(一个多列)的最高行值,但保持多列基本顺序

Spring RequestMapping参数自定义注解

java - 有没有办法在java中将变量转换为常量?