亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從未知的python文件中提取所有類和函數

從未知的python文件中提取所有類和函數

臨摹微笑 2022-07-26 15:50:20
我正在使用 AST 庫來提取這樣一個文件的所有細節,import astfile = open("TestFile.py", "r")f = file.read()p = ast.parse(f)classFunc = [node.name for node in ast.walk(p) if isinstance(node, ast.ClassDef) or isinstance(node, ast.FunctionDef)]print classFunc這給了我一個輸出,['adf', 'A', 'message', 'dghe', '__init__', 'mess', 'B', 'teqwtdg']這里'adf'和'A'是主類,'message'和'dghe'是'adf'下的函數,' init '和'mess'是A下的函數,'B'是'下的一個類A'和'teqwtdg'是'B'下的一個函數。所以,現在我的任務是編寫一個 python 文件,在其中創建類實例并調用這些函數(這些來自未知文件)。我想安排這個列表,以便我可以很容易地知道哪些是主類,哪些是子類以及哪個函數屬于哪個類。我怎樣才能做到這一點?
查看完整描述

1 回答

?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

以下代碼將遍歷文件并在層次結構中創建一個對象。


import ast

import pprint



def create_py_object(node_to_traverse, current_object):

    for node in node_to_traverse.body:

        if isinstance(node, ast.ClassDef):

            current_object.append({node.name: []})

            create_py_object(node, current_object[-1:][0][node.name])

        if isinstance(node, ast.FunctionDef):

            current_object.append({node.name: 'func'})



file = open("TestFile.py", "r")

f = file.read()

node_to_traverse = ast.parse(f)

py_file_structure = []


create_py_object(node_to_traverse, py_file_structure)

pprint.pprint(py_file_structure)

輸出 :


[{'adf': [{'message': 'func'}, {'dghe': 'func'}]},

 {'A': [{'__init__': 'func'}, {'mess': 'func'}, {'B': [{'teqwtdg': 'func'}]}]}]


查看完整回答
反對 回復 2022-07-26
  • 1 回答
  • 0 關注
  • 76 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號