我目前正在创建这样的对象:
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
...
我的问题是,你能把两者混合起来吗?我可以在哪里定义预期的参数,但仍然循环参数来设置属性?我喜欢定义预期参数的想法,因为它是自我记录的,其他开发人员不必搜索使用了哪些 kwargs。
我知道这看起来很琐碎,但我正在从一些 XML 创建一个对象,所以我将传递许多参数,它只会使代码混乱并让我感到困惑。
我用谷歌搜索了这个但找不到任何东西,可能是因为字典和 kwargs 一起指向 kwarg 示例。
更新:更具体地说,是否可以获得传入参数的字典,所以我根本不必使用 kwargs?
须藤代码:
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)