【发布时间】:2017-03-15 02:34:24
【问题描述】:
考虑下面的示例类:
class Foo(object):
def __init__(self, a=2, b=0, c=1, d=42):
self.a = a
self.b = b
self.c = c
self.d = d
有没有一种干净的方法可以将 kwargs 解压到成员变量中?也许这个例子是微不足道的,但想象一个有 17 个长名称成员变量的构造函数,比如redundant_data_structure_that_we_should_probably_remove。我知道setattr(),例如在this other question,但我不想在构造函数中接受**kwargs——也就是说,我只想解压缩定义的成员变量a, b、c 和 d。
【问题讨论】:
-
self.__dict__.update(locals())怎么样?这会设置任何不需要的属性吗? -
@Rawing 是的。它设置了一个不需要的
self.self。 -
查看attrs 包。