I m tinkering with Zhu ast
(Abstractyntax大树s)模块。
利用ast.NodeVisitor
,有可能走一条源树,并显示各种信息,如每一代号:
class MyAST(ast.NodeVisitor):
def visit_ClassDef(self, node):
print(node.col_offset * " " +node.name)
self.generic_visit(node)
def visit_FunctionDef(self, node):
print(node.col_offset * " " + node.name)
self.generic_visit(node)
之后,可将其用于任何一类法典:
tree = ast.parse(open("/path/to/file.py").read())
MyAST().visit(tree)
这将产生一些成果(例如:models.py,从requests包装:
RequestEncodingMixin
path_url
_encode_params
_encode_files
RequestHooksMixin
register_hook
deregister_hook
Request
__init__
__repr__
prepare
(...)
我愿就某一节点知道对它的全部“pa”。 在上述产出样本中,如果在<条码>功能设计/代码>上出现I m,则我知道其母是<条码>。 职等DefRequestHooksMixin
,以便我能产生RequestHooksMixin.deregister_hook<>。