如何在wxPython中实现类浏览器?我应该扫描整个代码,还是在wxPython中有一个函数?
发布于 2013-10-01 19:20:22
你的问题不完全清楚你想要什么,但我会做一些假设,并告诉你如何做一个可能的解释,你的要求。
我假设您有一个包含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))当我在Python3.3的stdlib中运行ast.py时,我得到了以下内容:
class NodeVisitor(object)
def visit
def generic_visit
class NodeTransformer(NodeVisitor)
def generic_visit如果这不是你想要的,你就得解释你想要什么。例如,如果您想要所有的类定义,即使是函数和方法…中的本地类定义嗯,上面那两个类的名字应该会有帮助的。
https://stackoverflow.com/questions/19123804
复制相似问题