1

Python を埋め込み、その内部オブジェクト モデルを Python オブジェクト/クラスとして公開するアプリケーションがあります。

オートコンプリート/スクリプトの目的で、doc タグ、構造、関数などを含む内部オブジェクト モデルのモックを抽出して、IDE オートコンプリートのライブラリ ソースとして使用できるようにしたいと考えています。

誰かがライブラリを知っていますか、またはそれらのクラスをソースにダンプするために使用できるコードスニペットを持っていますか?

4

2 に答える 2

2

dir()またはglobals()関数を使用して、まだ定義されているもののリストを取得します。次に、クラスをフィルタリングして参照するには、inspectモジュールを使用します

例 toto.py:

class Example(object):
    """class docstring"""

    def hello(self):
        """hello doctring"""
        pass

例browse.py:

import inspect
import toto

for name, value in inspect.getmembers(toto):
    # First ignore python defined variables
    if name.startswith('__'):
        continue

    # Now only browse classes
    if not inspect.isclass(value):
        continue
    print "Found class %s with doctring \"%s\"" % (name, inspect.getdoc(value))

    # Only browse functions in the current class
    for sub_name, sub_value in inspect.getmembers(value):
        if not inspect.ismethod(sub_value):
            continue
        print "  Found method %s with docstring \"%s\"" % \
            (sub_name, inspect.getdoc(sub_value))

pythonbrowse.py:

Found class Example with doctring "class docstring"
  Found method hello with docstring "hello doctring"

また、それはあなたの質問に実際には答えませんが、一種のIDEを書いている場合は、astモジュールを使用してpythonソースファイルを解析し、それらに関する情報を取得することもできます

于 2013-04-29T20:01:33.373 に答える
0

Python のデータ構造は可変であるため (モンキー パッチとは?を参照)、モックを抽出するだけでは不十分です。代わりに、dir()組み込み関数を使用して、可能なオートコンプリート文字列を動的にインタープリターに問い合わせることができます。

于 2013-04-29T06:34:52.313 に答える