2017-01-02 9 views
1

私が初めてでPythonスクリプトを編集しようとしています、それは狂気:(私を駆動します。正しいオートコンプリートでPythonスクリプトを編集するには?

を私は正しい自動補完のために、通訳のパスとしてPyCharmに追加することを、*の.pyファイルといくつかのディレクトリを持っている。

だから、私は、私は、JavaとC++プログラマと私はクラス型の変数を使用しています。

私が知っている、スクリプトでこの変数の型と価値を持っていることをいくつかのクラスに

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

を持っています。

しかし、PyCharmのインデクサーが* .pyファイルのインデックスを作成したとき、彼はそのSim.sim_infoの値がNoneであることを知っています。しかし、どのようにコード

s1=Sim() 
i=s1.sim_info 

変数iがクラスSimInfoの種類を持っていることを、指定することができますか?

i.is_ghostの自動補完を強制するには、「エディタヒット」のようなものを使用する必要がありますか?例えば

、コードi.is_ghosi.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 

この場合、変数の型を指定するにはどうすればよいですか(エディタのヒントのようなものを介している可能性があります)?

ありがとうございました!

+0

と呼ばまた、メンバ変数の型を指定するPyCharmでPEP484を使用することができますデフォルトで何かをオンにする必要はありません。 – 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

pycharmでtype hintingを@type docstringを使用して使用できます。

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

だけで、クラス名が機能しなかった場合にも、モジュールを含むクラスへのフルパスを指定することができます。

def __init__(self): 
    self.sim_info = None # type: SimInfo 
関連する問題