实例化具有任意数量属性的类

jdo*_*dot 2 python variables class variable-assignment

这个问题特别是在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.
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够将变量分配到self一行,类似于伪代码:

def __init__(self, a, b, c, r):
  self.varname = var for var in [a, b, c, r]
Run Code Online (Sandbox Code Playgroud)

如果将它推广到任意数量的变量会更好,这样你就可以得到类似的东西:

def __init__(self, **kwargs):
  assign(self, varname, value) for varname, value in kwargs.iteritems()
Run Code Online (Sandbox Code Playgroud)

但是,据我所知,这样的语句不可能循环.有谁知道这样做的方法?

nam*_*ess 6

你可以使用setattr:

class mm(object):
    def __init__(self, **kwargs):
        for varname, value in kwargs.iteritems():
            setattr(self, varname, value)
Run Code Online (Sandbox Code Playgroud)