在 Python 中初始化 class 变量的快速方法

Fast way to initialize class variables in Python

我想初始化一个实例,让 args 和 kwargs 都成为 class 变量。

class Example():
    def __init__(
        self,
        a: str,
        b: bool,
        c: int,
        d="str",
        e=True,
        f=123,
    ):
        class_member = dict(locals())
        del class_member["self"]
        self.set_property(class_member)

    @classmethod
    def set_property(cls, kwargs):
        for key, value in kwargs.items():
            setattr(cls, key, value)

a = Example("test", True, 1, d="test", e=False, f=456)
print(Example.d)  # test

我搜索了很多,得到了上面的结果。

有没有其他更简洁的方法来处理这个问题?谢谢!

--编辑--

感谢所有回答。 我的简化版:

class Example():
    def __init__(
        self,
        a: str,
        b: bool,
        c: int,
        d="str",
        e=True,
        f=123,
    ):
        class_member = dict(locals())
        del class_member["self"]
        for key, value in class_member.items():
            setattr(Example, key, value)

a = Example("test", True, 1, d="test", e=False, f=456)
print(Example.d)  # test

我之前考虑过使用**kwarg,但我仍然需要为kwargs分配默认值。所以这是我的最终解决方案。

您只能使用 setattrkwargs:

class Example:
    def __init__(self, **kwargs):
        for k, v in kwargs.items():
            setattr(Example, k, v)


a = Example(a="test", b=True, c=1, d="test", e=False, f=456)
print(Example.d)  # test