You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

可用于解析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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:15:03