如何在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
相关产品推荐
相关产品推荐

