私は現在、次のようなオブジェクトを作成しています。
class Obj(object):
def __init__(self,**kwargs):
params = ['val1','val2','val3','val4',...]
for p in params:
setattr(self,p,kwargs.get(p,None))
私はこれをしているので、これをする必要はありません:
class Obj(object):
def __init__(self,val1=None,val2=None,val3=None,val4=None,...):
self.val1=val1
self.val2=val2
self.val3=val3
self.val4=val4
...
私の質問は、2つを組み合わせて実行できますか?期待されるパラメーターを定義しながら、パラメーターをループして属性を設定できる場所はどこですか?自己文書化であり、他の開発者が使用されているkwargsを検索する必要がないため、期待されるパラメーターを定義するというアイデアが好きです。
かなり些細なことのように思えますが、XMLからオブジェクトを作成しているので、多くのパラメーターを渡すことになります。コードが乱雑になり、バグが発生します。
私はこれをグーグルで検索しましたが、何も見つかりませんでした。おそらく辞書とkwargsが一緒にkwargの例を指しているためです。
更新:より具体的には、渡されたパラメーターの辞書を取得して、kwargsをまったく使用する必要がないようにすることは可能ですか?
sudoコード:
class Obj(object):
def __init__(self,val1=None,val2=None,val3=None,val4=None,...):
for k,v in dictionary_of_paramters.iteritems():
setattr(self,k,v)