我正在使用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变量声明docstring?我知道:type
和:rtype
,但是如果我需要为特定变量声明类型?我可以申报几种类型吗?我该做什么?
注意:我无法使用get_instance()
进行任何更改。
我不认为你可以通过docstring做到这一点,但有一种叫做annotation的机制。你可以在冒号:
之后附加你想要的任何表达式,并使用箭头->
附加到函数声明本身。例如:
def getInstance(param: str) -> MyClass
return some_var
我在这里添加了一个输入参数用于说明。在这种情况下,str
和MyClass
分别是表示预期输入和返回类型的对象。它们从未在您的代码中直接使用,只是隐藏在func_annotations
属性中,以供最终用户关注那类事情(如编辑器)。
您可以使用与类的描述属性相同的方式执行此操作。这里的例子:
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中自动完成的示例: