2017-01-02 77 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