2016-04-19 5 views
0

私はCソースコード上で操作を行うための単純なPythonプログラムを持っています。だから、ヘッダファイルを.cファイルの#includeから抽出して保存し、.hファイルから関数宣言を取り出してそれらを保存し、関数から変数を取り出します。入れ子になったデータをPythonクラスに格納する最も良い方法は何ですか?

問題は、どのようにクラスに入れ子にすることができますか? すなわち.cファイルには.hファイルのリストが含まれ、.hファイルには関数宣言のリストが含まれ、関数宣言には変数のリストが含まれます。

は、これまでのところ私が持っているすべてがある:辞書はより良いオプションであるかどう

class C_File: 
    file_count = 0 

    def __init__(self, file_name): 
     self.file_name = file_name 
     C_File.file_count += 1 

    def headerFile(self, header_name, functions): 
     self.header_name = header_name 
     self.functions = [] 
     for x in functions: 
      self.variables.append(x) 

私はわかりませんか?それともクラスが必要なのですか? (これは私の最初のpythonプログラムです。私はC言語での作業に慣れています)

答えて

0

すべてをオブジェクトにし、各オブジェクトをそのサブオブジェクトのコンテナとして機能させます。クラスをインスタンス化すると、そのオブジェクトを解析して子を見つける責任があります。

したがって、C_Fileを作成し、ファイルの内容を反復処理してH_Fileオブジェクトを作成します。 H_Fileを作成すると、その内容を反復してFuncを作成します。 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)) 

それは一連の出来事を開始すべての子供、孫などを見つけることができます。

+0

ありがとう、私はそれらを別々のオブジェクトとして保つことについて考えなかった。 –

関連する問題