这个问题特别是在Python类的上下文中,但可以更加通用化。我正在创建一个类m
,它将使用四个变量进行初始化,然后我将其分配给类的实例化。现在,这看起来像这样:
class mm(object):
def __init__(self, a, b, c, r):
self.a = a
self.b = b
self.c = c
self.r = r
# etc.
但是,我希望能够在一行中将变量分配给self
,类似于伪代码:
def __init__(self, a, b, c, r):
self.varname = var for var in [a, b, c, r]
如果将它推广到任意数量的变量会更好,这样你就可以得到类似的东西:
def __init__(self, **kwargs):
assign(self, varname, value) for varname, value in kwargs.iteritems()
但是,据我所知,实际上不可能循环这样的语句。有谁知道这样做的方法?
答案 0 :(得分:5)
您可以使用setattr
:
class mm(object):
def __init__(self, **kwargs):
for varname, value in kwargs.iteritems():
setattr(self, varname, value)
答案 1 :(得分:2)
您还可以使用实例的命名空间字典进行批量分配:
class mm(object):
def __init__(self, **kwargs):
self.__dict__.update(kwargs)