2017-01-02 3 views
1

Я пытаюсь редактировать питона сценариев в первый раз, и это сводит меня с ума :(.Как редактировать скрипты 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().

Как указать типы переменных в этом случае (может быть через что-то вроде подсказок редактора)?

спасибо!

+0

Это должно произойти по умолчанию, вам не нужно ничего включать – MYGz

+0

Нет, это не (((.) –

+0

Вы нажали вкладку после 'i.i'? – MYGz

ответ

1

Python 3.6:

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

Другое питон:

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

Это называется "type hints"

+0

Большое спасибо! –

0

Вы можете использовать type hinting с pycharm, используя dtystring @type.

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 
Смежные вопросы