我有一个嵌入 python 并将其内部对象模型公开为 python 对象/类的应用程序。
出于自动完成/脚本编写的目的,我想提取一个内部对象模型的模拟,其中包含文档标签、结构、函数等,以便我可以将它用作 IDE 自动完成的库源。
有人知道一个库,或者有一些代码片段可以用来将这些类转储到源代码吗?
使用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 源文件并获取有关它们的信息
Python 数据结构是可变的(请参阅什么是猴子补丁?),因此提取模拟是不够的。您可以改为使用内置函数动态地向dir()
解释器询问可能的自动完成字符串。