我有一个嵌入python的应用程序,并将其内部对象模型公开为python对象/类。
对于自动完成/脚本编写目的,我想提取一个包含doc标签,结构,函数等的inernal对象模型的模拟,这样我就可以将它用作IDE自动完成的库源。
有人知道某个库,或者是否有一些可用于将这些类转储到源代码的代码段?
答案 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动态地向解释器请求可能的自动完成字符串。