Python を埋め込み、その内部オブジェクト モデルを Python オブジェクト/クラスとして公開するアプリケーションがあります。
オートコンプリート/スクリプトの目的で、doc タグ、構造、関数などを含む内部オブジェクト モデルのモックを抽出して、IDE オートコンプリートのライブラリ ソースとして使用できるようにしたいと考えています。
誰かがライブラリを知っていますか、またはそれらのクラスをソースにダンプするために使用できるコードスニペットを持っていますか?
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ソースファイルを解析し、それらに関する情報を取得することもできます
Python のデータ構造は可変であるため (モンキー パッチとは?を参照)、モックを抽出するだけでは不十分です。代わりに、dir()
組み込み関数を使用して、可能なオートコンプリート文字列を動的にインタープリターに問い合わせることができます。