2017-01-02 74 views
1

我想在第一时间编辑Python脚本,它使我疯了:(。如何用正确的自动完成编辑Python脚本?

我有一些目录中* .py文件,我加入到PyCharm的解释路径,正确自动完成。

所以,我有一些类

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

我Java和C++程序员,我用类类型的变量。

我知道,在脚本这个变量将有类型值。

但是,当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()

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

非常感谢!

+0

它应该在默认情况下发生,您不必打开任何东西 – MYGz

+0

不,它不是(((。 –

+0

你在'i.i'后按下了标签吗? – MYGz

回答

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

+0

非常感谢! –

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""" 

您也可以指定完整路径类包括如果只是类名没有工作的模块。您还可以使用PEP484在PyCharm指定成员变量的类型:

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