如何用Abstract Syntax Tree的方式,获取到所有继承过来的方法
test.py文件当中定义了一个继承出来的类InheritedClass
,想通过文件扫描的方式,用ast库来找出所有这个类中的继承过来的方法。
# test.py
from PyQt5 import QtWidgets
class InheritedClass(QtWidgets.QDialog, QtWidgets.QMainWindow):
def closeEvent(self, bool):
pass
下面是ast的文件扫描读取方式,visit_ClassDef这个方法可以定位出test.py文件中所有的类定义,和它的父类名称,以及一些属性,但是我现在卡在如何在这些找到的父类中,获取到所有继承过来的方法。
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)
或许还有其它方式,我知道dir(InheritedClass)的方式可以,但是我这边的方式是扫描目录中的所有py文件,然后进行方法名称的检查,类似PEP8的flask8检查但不完全遵照PEP8,所以需要通过ast方式,但也可能有其它方式我没有找到。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论