2

这个问题专门针对这里的 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()

但是,据我所知,实际上不可能循环遍历这样的语句。有谁知道这样做的方法?

4

2 回答 2

6

您可以使用setattr

class mm(object):
    def __init__(self, **kwargs):
        for varname, value in kwargs.iteritems():
            setattr(self, varname, value)
于 2013-01-27T03:46:40.160 回答
2

您还可以使用实例的命名空间字典进行批量分配:

class mm(object):
    def __init__(self, **kwargs):
       self.__dict__.update(kwargs)
于 2013-01-27T03:49:21.637 回答