如何使用正确的自动完成编辑Python脚本?

时间:2017-01-02 22:24:27

标签: python autocomplete pycharm

我正在尝试第一次编辑python脚本,它让我发疯:(。

我有一些带* .py文件的目录,我将其添加到PyCharm作为解释器路径,以便正确自动完成。

所以,我有一些课

class Sim():
     def __init__(self, *args, **kwargs):
        self._sim_info = None

我是Java和C ++程序员,我习惯于类类型变量。

我知道,在脚本中,此变量的值为SimInfo

但是,当PyCharm的索引器索引* .py文件时,他知道Sim.sim_info var的值为None。但是如何在代码

中指定
s1=Sim()
i=s1.sim_info

变量i的类型为SimInfo

可能我应该使用类似“编辑器点击”的内容来强制i.is_ghost自动完成?

例如,代码

from simulation.sims.sim import Sim
from simulation.sims.sim_info import SimInfo
from simulation.sims.pregnancy.pregnancy_tracker import PregnancyOffspringData

s1=Sim()
i=s1.sim_info
i.is_ghos

其中i.is_ghos必须自动完成i.is_ghost()

如何在这种情况下指定变量类型(可能是通过编辑器提示之类的东西)?

非常感谢!

2 个答案:

答案 0 :(得分:1)

Python 3.6:

class Sim():
     def __init__(self, *args, **kwargs):
        self._sim_info: SimInfo = None

其他python:

class Sim():
     def __init__(self, *args, **kwargs):
        self._sim_info = None  # type: SimInfo

它呼叫" type hints"

答案 1 :(得分:0)

您可以使用@type docstring将type hinting与pycharm一起使用。

def __init__(self, *args, **kwargs):
    # n.b., in your usage code you use `.sim_info`
    # but in your constructor you used `._sim_info`
    # since I didn’t see a prop get function, I assumed
    # that you meant `.sim_info`
    self.sim_info = None 
    """@type: SimInfo"""

def __init__(self, *args, **kwargs):
    self.sim_info = None
    """:type SimInfo"""

如果只是类名不起作用,您还可以指定类的完整路径,包括模块。您还可以在PyCharm中使用PEP484来指定成员变量的类型:

def __init__(self):
    self.sim_info = None # type: SimInfo