使用`Abstract Syntax Trees`来获取类节点的所有固有方法

时间:2017-10-26 02:53:23

标签: python class abstract-syntax-tree

我想通过python ast模块从类中获取所有固有的方法。在我的情况下,我必须使用扫描工具来读取* .py文件以获取所有类'固有的方法列表。

源代码:

# test.py
from PyQt5 import QtWidgets


class InheritedClass(QtWidgets.QDialog, QtWidgets.QMainWindow):
    def closeEvent(self, bool):
        pass

AST代码:

import ast

file = open('test.py', 'r')
source = file.read()


class NodeVisitor(ast.NodeVisitor):

    def visit_ClassDef(self, node):
        for base in node.bases:
            print base.__dict__


node = ast.parse(source)
visitor = NodeVisitor()
visitor.visit(node)

是否有办法获得InheritedClass所固有的所有方法。我的想法是遍历类节点的所有父节点(node.bases属性),然后获取它们的方法。但是当我想从父级bases属性中检索所有方法时,我有一个阻止程序。我对其他方面持开放态度。

0 个答案:

没有答案