2017-08-14 9 views
2

私はさまざまな機械学習モデルを実行しています。モデルパラメータやディレクトリなどのようなものが保存されているコード全体に送信できるオブジェクトを作成したいこの:モデルパラメータを辞書としてクラスに格納し、値を変更/追加

class model_parameters(object): 
    def __init__(self): 
     self.flags = {'clean': True, 
         'sampling': True} 
     self.dirs = {'inputs': '/inputs/', 
         'features': '/features/'} 

これらのパラメータのほとんどは一定であるが、コードを実行している間、いくつかは、私は変更する必要があり、いくつかの辞書のために、私はまた、値を追加します。 '/features/reduced/'からdirs['features']

例えば変更値、私がこのについて移動する最良の方法である場合は、すべての最初の言うことを、オブジェクト指向プログラミングで十分に堪能ではないです、そして第二に、私は値を変更する方法を

を入力するか、たとえばdirsに値を追加すると、'labels': '/labels/'というキーが追加されます。

答えて

2

一般的に、このアプローチは、それを行うためのOKな方法ですが、model_parametersはこれよりも多くの情報を追加しない限り、私はより良いあなたがやっていることを伝えるnamedtuple使用したい:

from collections import namedtuple 

ModelParameters = namedtuple('ModelParameters', ['flags', 'dirs']) 

model_parameters = ModelParameters(flags={'clean': True, 
              'sampling': True}, 
            dirs={'inputs': '/inputs/', 
             'features': '/features/'}) 

をあなたが、その後変更することができますがこのような値:

model_parameters.dirs['labels'] = '/labels/' 
:同様

model_parameters.dirs['features'] = '/features/reduced/' 

、値を追加することは、以前に割り当てられていないキーに割り当てることによって行われます

+0

まさに私が必要としたものです、ありがとう!私はこのタイプについて聞いたことがなかった。私は、Pythonでさまざまな格納方法を詳しく調べる必要があると信じています。 – Tobias

関連する問題