考虑下面的示例类:
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
。
答案 0 :(得分:3)
我之前看过这个,并得出结论,那里没有很好的方法来自动化样板。
幸运的是,您通常不需要它:
__init__
中传递了17个成员变量,那么现在是重构的时间。 如果您想尝试使用库来删除重复项,请查看python-fields
或稍微不那么神奇的attrs
。