1

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

出于自动完成/脚本编写的目的,我想提取一个内部对象模型的模拟,其中包含文档标签、结构、函数等,以便我可以将它用作 IDE 自动完成的库源。

有人知道一个库,或者有一些代码片段可以用来将这些类转储到源代码吗?

4

2 回答 2

2

使用dir()globals()函数来获取已经定义的列表。然后,过滤和浏览你的类使用检查模块

示例 toto.py:

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

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

示例浏览.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))

蟒蛇浏览.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 回答