PyCharm - 尾随类型提示和线宽限制

Fer*_*ndr 5 python type-hinting pycharm

在 PyCharm 中,我通常对这样的变量使用尾随类型提示(不确定调用它们的正确方法):

my_var = my_other_variable  # type: MyObject
Run Code Online (Sandbox Code Playgroud)

但是,有时我已经有很长的一行无法真正拆分,或者类型提示有点长,例如:

my_var = my_really_long_variable_name  # type: QtWidgets.QVeryLongQtClassName
Run Code Online (Sandbox Code Playgroud)

这将使整行比我的行宽限制(79 个字符)长,因此 PyCharm 会标记警告。

因此,有没有办法将类型提示放在不同的行中?我尝试了这些,但它们似乎不起作用:

# type: QtWidgets.QVeryLongQtClassName
my_var = my_really_long_variable_name

my_var = my_really_long_variable_name \
    # type: QtWidgets.QVeryLongQtClassName
Run Code Online (Sandbox Code Playgroud)

我能想到的最接近的是这个,它可能不会真正缩短线宽:

my_var = \
    my_really_long_variable_name  # type: QtWidgets.QVeryLongQtClassName
Run Code Online (Sandbox Code Playgroud)

否则,我唯一的选择就是做这样的事情:

v = my_really_long_variable_name
my_var = v  # type: QtWidgets.QVeryLongQtClassName
Run Code Online (Sandbox Code Playgroud)

根据我所做的测试,缩短类型的另一种选择似乎不起作用;PyCharm 似乎很难识别my_var's 类型QtWidgets.QVeryLongQtClassName在这种情况下确实如此:

t = QtWidgets.QVeryLongQtClassName
my_var = my_really_long_variable_name  # type: t
Run Code Online (Sandbox Code Playgroud)

Yuv*_*uss 3

我发现直接从模块导入类名以供类型注释使用非常方便。例如:

from QtWidgets import QVeryLongQtClassName
my_var = my_really_long_variable_name  # type: QVeryLongQtClassName
Run Code Online (Sandbox Code Playgroud)

我还没有遇到过像你这样的问题。

然而,我发现这个版本是注释长行的最易读和最方便的方法:

my_var = \
    my_really_long_variable_name  # type: QtWidgets.QVeryLongQtClassName
Run Code Online (Sandbox Code Playgroud)

更新:另一种实现方式:

my_var = (
    my_really_long_variable_name
)  # type: QtWidgets.QVeryLongQtClassName
Run Code Online (Sandbox Code Playgroud)

此外,它在大多数 IDE 中都受支持并且不会导致问题。