PyDev を使用して PDT と同じようにコード補完を行うことができますか?
-
19-09-2019 - |
質問
PyDev に変数の型を伝えることでコード補完を支援する方法はありますか?
PDT を使用すると、次のような目的で PHPDoc のような構文を使用できます。
/* @var $my_var MyClass */
$my_var = myFunction();
// PDT is able to figure out that $my_var is a MyClass object.
しかし今のところ、Python で同じことを行う方法がわかりません。
解決
いいえ(を参照) ドキュメント)。PyDev はインポートされたものと言語キーワードの補完を行うようです。
ただし、これはあまり出てこないようです。問題の変数は、デフォルト値なしで関数の引数として渡された場合にのみ pydev に知られるようです。また、独自のクラスで動作する関数がある場合、それはクラスのメンバーである必要があるようです(したがって、オートコンプリートはすでに機能します)。
他のヒント
アサートトリックはPyDevは2.2.2と私のために動作するようには思えません。それはまだになっている?
は、しかし、別のトリックは私がしようと、その作業には、次のものがあります:
class Foo(object):
def __init__(self, bar):
self.bar = bar
# Tricking PyDev
if (not self.bar):
self.bar = Bar()
raise Exception("Bar should not be null")
は、すべての場合において、それはかなりハックに見える、と私は物事を行うにはクリーンな方法を大好きだ(ドキュメント、注釈、何でも)
実際には、あなたがアサートでisinstanceを行うことができる場合()
例えば:ます。
a = function()
assert isinstance(a, MyClass)
a. <- would get the proper completions
PyDevは、関数の戻り値を解析し、そう、それは例数にそれを知っている可能性がありますので注意してください。
また、それは-Oあなたのpythonを使用している場合、実行時のペナルティがあってはなりません(削除されたアサート)
所属していません StackOverflow