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

如何不实例化类,提取静态方法get_values的逻辑信息编写文档?

提取静态方法逻辑生成Markdown表格实现方案

实现思路

通过Python的抽象语法树(AST)做静态代码分析,无需调用目标方法,就能提取match-case分支里的val值和对应计算逻辑,再生成指定格式的Markdown表格写入ReadMe.md。

具体实现代码

import ast
from typing import Dict

def extract_calculation_logic(file_path: str) -> Dict[str, str]:
    # 读取目标Python文件内容
    with open(file_path, 'r', encoding='utf-8') as f:
        code_content = f.read()
    
    # 解析代码生成AST语法树
    ast_tree = ast.parse(code_content)
    logic_map = {}

    # 遍历AST找到目标静态方法
    for node in ast.walk(ast_tree):
        if isinstance(node, ast.FunctionDef) and node.name == 'get_values':
            # 定位到match语句
            for statement in node.body:
                if isinstance(statement, ast.Match):
                    for case_branch in statement.cases:
                        # 提取case对应的val值
                        val_str = case_branch.pattern.value
                        # 提取return语句中的计算表达式
                        return_node = case_branch.body[0]
                        if isinstance(return_node, ast.Return):
                            # 将AST节点转回代码字符串
                            calc_expr = ast.unparse(return_node.value)
                            # 去除换行和多余空格,转为单行格式
                            calc_expr = ''.join(calc_expr.split())
                            logic_map[val_str] = calc_expr
    return logic_map

def write_to_readme(logic_map: Dict[str, str], output_file: str = 'ReadMe.md'):
    # 构建Markdown表格内容
    table_header = "| val | calculation |\n| --- | --- |\n"
    table_rows = [f"| {val} | {expr} |\n" for val, expr in logic_map.items()]
    full_table = table_header + ''.join(table_rows)

    # 将表格写入ReadMe.md(覆盖原有内容,如需追加可修改模式为'a')
    with open(output_file, 'w', encoding='utf-8') as f:
        f.write(full_table)

if __name__ == '__main__':
    # 替换为你的目标Python文件路径
    calc_logic = extract_calculation_logic('your_class_file.py')
    write_to_readme(calc_logic)

关键说明

  1. 静态分析安全可靠:用AST解析代码,不会执行任何业务逻辑,避免调用方法带来的副作用。
  2. 兼容性处理:ast.unparse仅在Python 3.9及以上版本可用,若用更低版本,可安装astor库,用astor.to_source(return_node.value)替代ast.unparse。
  3. 结构适配:代码默认适配你提供的match-case结构,若目标方法代码结构有变化(如新增case分支、return语句嵌套等),需调整AST节点的遍历逻辑。

内容的提问来源于stack exchange,提问作者ohh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:05:21