2012-01-27 1 views
5

私は最近PyCharmを取り上げました。私はWingの機能に慣れていて、IDEに特定の識別子(変数、属性など)を教えることができます。たとえば:PyCharmに属性がどのクラスのインスタンスであるかを明示的に伝える方法はありますか?

my_object = SomeClass() 
assert isinstance(my_object.my_attribute, SomeOtherClass) 

この時点で、ウィングは、それがそうでない場合は、ソースコード解析から、それを把握することができませんでしたでも場合my_object.my_attributeが何であるかを正確に知っています。

私はPyCharmで同様の機能を探しています。私はオブジェクトの特定の属性が何であるかを知っていますが、PyCharmはそうではありません。どうすればそれを伝えることができますか?

関連質問:私も同様の質問、How can I tell PyCharm what type a parameter is expected to be?を見ていますが、それは属性をカバーしていない、ただのパラメータ。

答えて

7

実際にPyCharmは 'assert isinstance'構文も理解していますが、修飾されていない参照についてのみ理解しています。私も資格を参照のためにこれをサポートするために、問題を提起しました:現在のバージョンで

http://youtrack.jetbrains.net/issue/PY-5614

を、あなたは工assの宣言に行くとepydocやスフィンクスドキュメンテーション文字列を追加することにより、my_attributeの種類を指定することができます属性のために。私はあなたが探している正確にどのようなご質問がPyCharmから一般的な型推論で理解していれば

2

これは私(2.6.2)

class Rule (object): 
    def __init__(self, *args): 
     self.criteria = [] 
     """@type : list of Criterion""" 
     crit = self.criteria[0] 
     #on this line, code completion works for "crit" 
5

のために働いています。静的型付けされた言語から来て、コード補完を使用したときに私は困惑し、その選択肢はPythonライブラリの内容と同数でした。

PyCharmには、実行時に型情報を収集し、開発時(つまりコード補完)に利用できるようにするオプションがあります。ここで

はないあなたがする必要はありません(ただし、「デバッグ」として

あなたのコードを「コード・インサイトの実行時の型を収集」...あなたはどのように

設定> Pythonのデバッガ>でありますブレークポイントを使用する)。 PyCharmが始まり、すべてのコードのナビゲーション/補完に関するより良い提案が提供されます。

乾杯

Picture of Debug Preferences

関連する問題