Python:实用的内省

roo*_*oot 5 python introspection

我经常发现自己使用的第三方库 - 包和模块 - 缺乏足够的文档.因此,研究源代码变得至关重要,但也可能是一项有点乏味的任务.我(我猜每个人)使用dir()help()功能开始,最近我开始使用该inspect模块.我想知道您使用什么"方法"来深入编写记录错误的代码以及如何提高这样做的效率.非常感谢.

gva*_*kov 5

我觉得IPython对于这类任务来说是不可或缺的.该?(显示文档字符串)和??(节目源)魔法命令,加上IPython中出色的完成系统和实时对象自省真正有所作为我.

一个示例会话:

In [1]: import sphinx.writers <TAB>
# see available modules and packages - narrow down

In [1]: import shpinx.writers.manpage as manpage
In [2]: manpage.<TAB>
# list and complete on the module's contents 

In [3]: manpage.Writer?
# nicely formatted docstring follows

In [4]: manpage.Writer??
# nicely formatted source code follows

In [5]: %edit manpage
# open module in editor
# it really helps if you use something like ctags at this point

In [6]: %edit manpage.Writer
# open module in editor - jump to class Writer
Run Code Online (Sandbox Code Playgroud)

不幸的是,并非所有代码都可以通过这种方式进行检查 想起那个项目做的事情模块没有在包装它们if __name__ == '__main__'或严重依赖于魔术(项目SH想到).