【发布时间】:2013-01-10 17:41:45
【问题描述】:
这个问题专门针对这里的 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()
但是,据我所知,这样的语句实际上是不可能循环的。有谁知道这样做的方法吗?
【问题讨论】:
-
如果您真的非常想在一行中完成,您可以将
setattr与map结合使用(在您的**kwargs示例中,_ = map(lambda (a, v): setattr(self, str(a), v), kwargs.items())),但我会从下面的无名中使用相同的两条线:) -
@RocketDonkey 这是一个很棒的班轮。
-
@MikeVella Ha,谢谢(尽管为了其他人阅读我的代码,我可能永远不会使用它:))。
标签: python class variables variable-assignment