Python。提示变量

Python. Hint for variable

我正在使用 PyCharm 作为编辑器。例如,我有下一个功能:

def get_instance():
    # method without doc sctring in some module
    # returns instance of MyClass
    return some_var

我还有第二个文件调用 get_instance():

var = get_instance()

如何定义值的数据类型?我想对变量使用自动完成功能。

例如在php中会是这样的:

/** @var MyClass $var */
$var = getInstance();

之后我将看到 $var 的所有方法和属性。如何为 python 变量声明文档字符串?我知道 :type:rtype,但是我是否需要为特定变量声明类型?我可以声明几种类型吗?我该怎么办?

注意:我无法对 get_instance() 进行任何更改。

我不认为你可以通过文档字符串来做到这一点,但有一种机制叫做 annotation。您可以将任何表达式附加到冒号 : 后的参数和使用箭头 -> 的函数声明本身。例如:

def getInstance(param: str) -> MyClass
    return some_var

为了便于说明,我在这里添加了一个输入参数。在这种情况下,strMyClass 是分别表示预期输入和 return 类型的对象。它们永远不会直接在您的代码中使用,只是隐藏在一个 func_annotations 属性中,供关心此类事情的最终用户(例如编辑器)使用。

您可以按照 class 的描述属性相同的方式进行操作。这里的例子:

from example_module import MyClass

var = get_instance()
"""
:type var: MyClass
"""

您也可以像这样使用不导入的描述:

var = get_instance()
"""
:type var: example_module.MyClass
"""

第二种方式使用PEP 484:

test = my()  # type: dict

Pycharm 中的自动完成示例: