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

时间:2017-07-28 10:13:53

标签: python pycharm type-hinting

在PyCharm中,我通常使用尾随type hints(不确定调用它们的正确方法)来实现这样的变量:

my_var = my_other_variable  # type: MyObject

然而,有时我已经有一条很长的线,我无法真正拆分,或者类型提示有点长,例如:

my_var = my_really_long_variable_name  # type: QtWidgets.QVeryLongQtClassName

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

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

# type: QtWidgets.QVeryLongQtClassName
my_var = my_really_long_variable_name

my_var = my_really_long_variable_name \
    # type: QtWidgets.QVeryLongQtClassName

我能想到的最接近的是这个,这可能并没有真正缩短线宽:

my_var = \
    my_really_long_variable_name  # type: QtWidgets.QVeryLongQtClassName

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

v = my_really_long_variable_name
my_var = v  # type: QtWidgets.QVeryLongQtClassName

根据我所做的测试,缩短类型的另一种选择似乎不起作用;在这种情况下,PyCharm似乎很难认识到my_var的类型真的是QtWidgets.QVeryLongQtClassName

t = QtWidgets.QVeryLongQtClassName
my_var = my_really_long_variable_name  # type: t

1 个答案:

答案 0 :(得分:2)

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

from QtWidgets import QVeryLongQtClassName
my_var = my_really_long_variable_name  # type: QVeryLongQtClassName

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

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

my_var = \
    my_really_long_variable_name  # type: QtWidgets.QVeryLongQtClassName

更新:实现此目的的另一种方法:

my_var = (
    my_really_long_variable_name
)  # type: QtWidgets.QVeryLongQtClassName

此外,它支持并且不会在大多数IDE中引起问题。