[英]How to make wxPython class browser
如何在wxPython中实现类浏览器? 我应该扫描整个代码,还是在wxPython中有这个函数?
你的问题并不完全清楚你想要什么,但我会做一些假设,并告诉你如何对你所要求的一种可能的解释。
我假设您有一个包含Python脚本内容的字符串,或者来自您的剪切和粘贴存储库的片段,或者其他任何内容,您只想知道该源代码字符串中定义的顶级类。
您可能不想执行该代码。 首先,谁知道任意奇怪的代码可以对您的环境做些什么? 另一方面,如果您正在构建类浏览器,您可能希望它能够处理依赖于您可能无法访问的其他代码的代码,因此您无法执行它。
所以,你要解析它。 最简单的方法是使用ast
模块让Python为你做这件事:
import ast
with open('mymodule.py') as f:
mycode = f.read()
myast = ast.parse(mycode)
for thing in myast.body:
if isinstance(thing, ast.ClassDef):
print('class {}({})'.format(thing.name,
', '.join(base.id for base in thing.bases)))
for subthing in thing.body:
if isinstance(subthing, ast.FunctionDef):
print(' def {}'.format(name))
当我从Python 3.3的stdlib中反对比较ast.py时,我得到了这个:
class NodeVisitor(object)
def visit
def generic_visit
class NodeTransformer(NodeVisitor)
def generic_visit
如果这不是你想要的,你必须解释你想要什么。 例如,如果你想要所有的类定义,甚至是函数和方法中的本地定义...那么,刚刚抛出的那两个类的名称应该会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.