使用“Abstract Syntax Trees”获取类nod的所有固有方法

2024-06-07 03:56:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过pythonast模块从类中获取所有固有的方法。在我的例子中,我必须使用扫描工具来读取*.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所固有的所有方法。我的想法是通过所有的父母节点基础属性),然后获取它们的方法。但是当我想从父级检索所有方法时,我有一个拦截器,bases属性。我也愿意接受其他方式。你知道吗


Tags: 方法pytestimportselfnodesourcedef