将嵌套数据存储在python类中的最佳方法是什么?

时间:2016-04-19 21:07:10

标签: python

我有一个简单的python程序,用于对C源代码进行操作。所以我从.c文件中的#include中提取头文件并存储它们,从.h文件中获取函数声明并存储它们,并从函数中获取变量。

问题是,如何将这些嵌套到一个类中并保持链接? 即.c文件包含.h文件列表,.h文件包含函数声明列表,函数声明包含变量列表。

到目前为止,我所拥有的只是:

var arrString = ""[{\"8872\" : \"Yes\",\"9900\" : \"Bob\",\"2222\" : \"Sagat\"}]"


var arr = JsonConvert.DeserializeObject(arrString);

foreach (var attendee in (IEnumerable) attendeeArray)
{
  var theResponseOfQuestion9900 = attendee.9900
}

我不确定字典是否会更好?或者我甚至需要上课? (这是我的第一个python程序,我以前在C中工作)

1 个答案:

答案 0 :(得分:0)

将所有内容都设为对象,每个对象充当其子对象的容器。实例化一个类时,它负责解析其对象以查找其子类。

因此,您创建了一个C_File,它迭代文件的内容并创建H_File对象。当您创建H_File时,它会迭代其内容并创建Funcs。当您创建Func时,它会迭代其内容以创建Vars。等等。

例如:

class C_File(object):
    def __init__(self, filename):
        self.headers = []
        for header in self._get_headers(filename):
            self.headers.append(H_File(header))

class H_File(object):
    def __init__(self, header):
        self.funcs = []
        for func in self._get_funcs(header):
            self.funcs.append(Func(func))

class Func(object):
    def __init__(self, func):
        self.vars = []
        for var in self._get_vars(func):
            self.vars.append(Var(var))

然后,您的主程序只需循环遍历文件名列表,创建C_Files:

def main():
    c_files = []
    for file in os.path.listdir(sys.argv[1]):
        c_files.append(C_File(file))

在创建每个对象时,它会启动一系列事件,找到所有子项,孙子项等。