2

この質問は、ここでは特に Python クラスのコンテキストにありますが、より一般化することができます。4 つの変数で初期化されるクラス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ただし、疑似コードのような 1 行で変数を割り当てられるようにしたいと考えています。

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 に答える