可用于解析Python文件提取基类及类内方法的库或框架有哪些
实现方案
Python 标准库自带的 ast 模块就可以完美满足你的需求,无需安装任何第三方依赖,直接解析代码的抽象语法树即可精准提取类名、基类、类内方法等所有信息。你之前查询的Jedi主打代码补全、跳转类的IDE功能,做静态语法结构提取反而冗余。
示例实现代码
import ast def extract_class_info(code: str): tree = ast.parse(code) result = [] # 遍历语法树所有节点 for node in ast.walk(tree): # 匹配类定义节点 if isinstance(node, ast.ClassDef): # 提取基类名称 base_classes = [base.id for base in node.bases if isinstance(base, ast.Name)] # 提取类内部的方法 methods = [] for item in node.body: if isinstance(item, ast.FunctionDef): methods.append(f"{node.name.lower()}.{item.name}") result.append({ "类名": node.name, "基类": base_classes, "方法列表": methods }) return result # 代入你提供的示例代码测试 test_code = """ class A: def m1(): // in a.m1 pass class B(A): def m2(): // in b.m2 """ if __name__ == "__main__": class_info = extract_class_info(test_code) for item in class_info: print(item)
运行输出
{'类名': 'A', '基类': [], '方法列表': ['a.m1']} {'类名': 'B', '基类': ['A'], '方法列表': ['b.m2']}
如果需要处理更复杂的场景,比如嵌套类、带装饰器的方法、继承自外部导入的基类等,只需要扩展对应AST节点的判断逻辑即可,灵活度远高于第三方封装的库。如果有保留代码格式、同步修改代码的需求,也可以选择第三方库libcst实现。
内容的提问来源于stack exchange,提问作者close2zero
相关产品推荐
相关产品推荐

