2012-04-17 11 views
-1

が、私はそのような機能を持っていると仮定し、ガイド:Pythonのdocumentator、IDE

def render(someobject): 
someobject. #here i expect IDE to know which class it is and autocompletion and other IDE functional will be available 
dorender() 

私の場合はIDEは、そこに何が起こるのか知る方法がありません。 コメントを使用してどのように伝えますか?私が知っているとき

私はこの

/** 
* @param MyClass myobject 
**/ 
function render($myobject){ 
    //by typing $myobject-> IDE already knows, that it should use $myobject as MyClass objec 
    dorender() 
} 

別のユースケースのようなものを使用しましたPHPの場合は

は、いくつかのケースでは、いくつかのプロキシがいくつかのオブジェクト IDEが知ってする機会を持っていないが、私返すことであり、これをコメントで指定し、将来自分自身を助け、IDEを助けたいと思っています。 PHPで

私は次の操作を行いますPhpStormを使用しながら:

$myobject=some_proxy() 
/** 
* @var $my_object MyClass 
**/ 
// in following code IDE will use $myobject as MyClass 

どのように私はspecificaly PyCharmと同じ動作を実現し、共通のpython documentatorsことができますか?

+0

答えが見つかりました、ここでstackoverflow:D正確に私が必要なもの。 http://stackoverflow.com/questions/6318814/how-can-i-tell-pycharm-what-type-a-parameter-is-expected-to-be – Tigra

答えて

1

docstringを使用します。

def render(someobject): 
    """ This methods renders some object. """ 
    dorender() 

詳しい情報は、あなたがオブジェクトのメソッドを知るためにイントロスペクションを使用することができ、ここでhttp://en.wikipedia.org/wiki/Docstring#Python

見つけることができ、属性など:

dir(object) 
help(object) 

イントロスペクションに基づく自動補完とIDE統合が可能です。 Python.orgウェブサイトで利用可能詳細情報:http://wiki.python.org/moin/IntegratedDevelopmentEnvironments

someobjectは、あなたがtypeisinstanceを使用することができるかを調べるために、以下の擬似コードを参照してください。私はそれが動作するかどうかわからない

type(someobject) 
if isinstance(someobject, ClassA): 
    print "someobject is a ClassA variable" 
+0

もう一度、これはちょうど私のためのヒントです。 IDEはまだそれがどのようなオブジェクトの型か分からない。例えば、私は(関数内で)someobjectをしたいと思う(入力を開始し、関連するメソッドを見たい) – Tigra

+0

コードの自動補完とのIDEの統合はIDEによって異なります。 – cfedermann

+0

そしてagian、help、dir - 私のためだけです。これはIDEのイントロスペクションを有効にしません。質問をもっと慎重に読んでください。私はdocsrtingについて知っているが、多分私はポイントを見逃しているが、私はクラスにsomeobjectが属しているIDE(自分とdocstringを使用するdoc-builderではなく)に指定する方法を見ていない。ですから、私は後でリファクタリングを行い、 "用途を見つけて"、オートコンプリートを使うことができました。 MyClassが明示的に指定されている場合にのみ実行可能なもの – Tigra

0

をPyCharm(私はそれを使用しません)で - しかし、Python 3のためにfunction annotationsが追加されました。

あなたは、関数の定義の中にそれらを置くことができます。

def render(someobject :ObjectClass): 
    dorender() 

たぶんPyCharmはSomeObjectの上で使用可能なメソッドを定義するためにこれを使用します。

編集:私は、これは(すごいです)動作する必要がありますね小さな試験後

+0

ありがとうございますが、Python 2.xでは動作しません。 phpdocでphpdocが動作しています。すべてのIDEがアノテーションをサポートしています。 phpstorm、netbeans、eclipseなど多くのものがあります。 ( – Tigra

+0

少なくとも、私はオブジェクトクラスに言及しているdocstringには規約がないことを知っています。コードの静的解釈を許可すると思われます。アノテーションはPython 3で追加されました。 – BergmannF

関連する問題