Python: 将 init args 干净地解压到成员变量中

Python: unpack init args into member variables cleanly

考虑下面的示例 class:

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——也就是说,我只想解压已定义的成员变量abcd

我之前看过这个,并得出结论,没有很好的方法来自动化样板文件。

幸运的是,您通常不需要它:

  • 如果 __init__ 中传递了 17 个成员变量,是时候进行重构了。
  • 如果您的 class 只是一个名称空间/数据包,请不要首先使用 class。

如果您想尝试使用库来删除重复项,请查看 python-fields, or the slightly less magical attrs