繁体   English   中英

如何制作wxPython类浏览器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM