用任意数量的属性实例化类
这个问题主要是在讨论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()
不过,按照我所知道的,似乎不太可能像那样循环执行赋值语句。有没有人知道怎么做到这一点?
2 个回答
2
你还可以使用实例的命名空间字典来进行批量赋值:
class mm(object):
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
6
你可以使用 setattr
这个函数:
class mm(object):
def __init__(self, **kwargs):
for varname, value in kwargs.iteritems():
setattr(self, varname, value)