You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python类的__init__方法中通过kwargs创建实例属性?

实现Python类通过关键字参数创建实例属性

要把传入的关键字参数直接转为实例属性,有两种实用的实现方式:

方法1:直接更新实例属性字典

利用Python实例的__dict__属性(存储实例所有属性的字典),通过update方法批量添加属性,代码最简洁高效:

class Test():
    def __init__(self, **kwargs):  # 若不需要接收位置参数,可删除*args
        """Create instance attributes from dict"""
        self.__dict__.update(kwargs)

t = Test(a=1, b=2, c=3)
print(t.a, t.b, t.c)  # 输出:1 2 3

方法2:遍历关键字参数逐个设置属性

如果需要对属性做额外处理(比如校验、过滤特定属性),可以用setattr函数遍历关键字参数:

class Test():
    def __init__(self, **kwargs):
        """Create instance attributes from dict"""
        # 示例:仅允许创建指定名称的属性
        allowed_attrs = {'a', 'b', 'c'}
        for key, value in kwargs.items():
            if key in allowed_attrs:
                setattr(self, key, value)

t = Test(a=1, b=2, c=3, d=4)
print(t.a, t.b, t.c)  # 输出:1 2 3
# print(t.d)  # 会报错,因为d不在允许的属性列表内

补充说明

  • 如果你的场景不需要处理位置参数,建议删除代码中的*args,避免接收不必要的参数。
  • 方法1适合无额外逻辑的批量属性创建;方法2适合需要自定义属性规则的场景。

内容的提问来源于stack exchange,提问作者zvaren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:45:37