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

如何通过动态变量名引用Python类的实例属性?

动态设置Python类实例属性的方法

问题背景

用户定义了如下Python类:

class myClass():
   def __init__(self):
      self.first = ""
      self.second = ""
      self.third = ""

常规的属性设置方式是直接通过实例访问:

myClassVar = myClass()

myClassVar.first = "foo"
myClassVar.second = "bar"

当尝试通过遍历属性名列表动态设置属性时,写出了如下错误代码并报错myClass has no 'item' member:

varList = ["first", "second", "third"]
for item in varList:
   myClass.item = "whatever I want to set it to"

解决方法

方法一:使用setattr()函数(推荐)

Python内置的setattr()函数专门用于动态设置对象属性,第一个参数是实例对象,第二个是属性名字符串,第三个是要设置的值。修改后的代码如下:

myClassVar = myClass()
varList = ["first", "second", "third"]
for item in varList:
    setattr(myClassVar, item, "whatever I want to set it to")

方法二:直接操作实例的__dict__属性

每个类实例都有一个__dict__字典,存储了它的所有实例属性(不包含继承的属性),可以直接通过键值对的方式修改:

myClassVar = myClass()
varList = ["first", "second", "third"]
for item in varList:
    myClassVar.__dict__[item] = "whatever I want to set it to"

错误原因说明

原代码的问题有两个:一是直接操作了类myClass而非实例myClassVar,二是用.访问动态变量名——Python中.后面只能跟固定的属性名,无法识别循环中的动态变量item。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:17:44