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

如何根据特定字符串变量的值为Python类实例对应属性赋值

动态为类实例属性赋值的规范实现

你需求的场景应该使用Python内置的setattr()函数实现,这是官方推荐的标准写法,不要直接操作实例的__dict__属性。

修改后的完整代码

class My_Class():
    def __init__(self):
        self.value1 = ''
        self.value2 = ''


def main():
    var1 = 'value1'
    c1 = My_Class()
    # 替换原来的__dict__操作
    setattr(c1, var1, 'string')


if __name__ == '__main__':
    main()

不推荐直接操作__dict__的原因

直接访问__dict__属于操作实例的内部存储结构,存在多个问题:

  • 违反封装原则:__dict__是Python类实例的内部实现细节,不属于公开API,不同版本或者特殊类的实现可能有差异
  • 兼容性差:如果类定义了__setattr__钩子方法、使用@property装饰器定义属性、或者声明了__slots__没有预留__dict__空间,直接修改__dict__要么不生效要么直接报错
  • 可读性低:其他维护者需要额外理解你操作内部字典的意图,不如setattr语义明确

拓展用法

如果需要先校验目标属性是否存在,避免给类实例新增意料之外的属性,可以配合hasattr()使用:

if hasattr(c1, var1):
    setattr(c1, var1, 'string')
else:
    raise ValueError(f"实例不存在属性{var1}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:48:01