嵌入式python解释器,生成用于自动完成的存根源代码

时间:2013-04-23 15:52:06

标签: python mocking

我有一个嵌入python的应用程序,并将其内部对象模型公开为python对象/类。

对于自动完成/脚本编写目的,我想提取一个包含doc标签,结构,函数等的inernal对象模型的模拟,这样我就可以将它用作IDE自动完成的库源。

有人知道某个库,或者是否有一些可用于将这些类转储到源代码的代码段?

2 个答案:

答案 0 :(得分: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))

python browse.py:

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

另外,这并没有真正回答你的问题,但如果你正在编写一种IDE,你也可以使用ast模块来解析python源文件并获取有关它们的信息

答案 1 :(得分:0)

Python数据结构是可变的(参见What is a monkey patch?),因此提取模拟是不够的。您可以使用the dir() built-in function动态地向解释器请求可能的自动完成字符串。