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

如何通过字符串动态修改Python类实例的属性?

解决Python类中动态设置属性的问题

哈哈,我太懂这种“明明之前做过但突然忘干净”的感觉了!你现在的问题出在动态访问类实例属性的方式不对——你用了self[attribute]这种下标写法,但Python的类实例不是字典(虽然它内部有个__dict__存储属性,但不能直接用下标访问)。

正确的实现方式

Python专门提供了setattr()内置函数来完成动态设置属性的需求,修改你的代码如下:

class A:
    def __init__(self):
        self.word = B.getWord()
        self.phrase = "Some default string"
    def set_dynamically(self, attribute, value):
        # 替换原来的self[attribute] = value
        setattr(self, attribute, value)

这样你就能正常调用A().set_dynamically('word', C.getWord())来动态修改属性了。

额外补充知识点

  • 对应的,如果要动态获取属性值,可以用getattr()函数,比如:getattr(self, 'word'),还能指定默认值避免报错:getattr(self, 'nonexistent_attr', 'default_value')
  • 如果想先判断属性是否存在,可以用hasattr()函数,比如在设置前做校验,避免误加不存在的属性:
def set_dynamically(self, attribute, value):
    if hasattr(self, attribute):
        setattr(self, attribute, value)
    else:
        raise ValueError(f"类A中不存在属性 {attribute}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:18:19