python - 您如何以编程方式设置属性?

假设我有一个python对象x和一个字符串s,如何在x上设置属性s?所以:

>>> x = SomeObject()
>>> attr = 'myAttr'
>>> # magic goes here
>>> x.myAttr
'magic'

什么是魔法?顺便说一句,这样做的目的是缓存对 x.__getattr__() 的调用。

最佳答案

setattr(x, attr, 'magic')

寻求帮助:

>>> help(setattr)
Help on built-in function setattr in module __builtin__:

setattr(...)
    setattr(object, name, value)
    
    Set a named attribute on an object; setattr(x, 'y', v) is equivalent to
    ``x.y = v''.

但是,您应该注意,您不能对 object 的“纯”实例执行此操作。但很可能你有一个简单的对象子类,它可以正常工作。我强烈敦促 O.P. 永远不要制作这样的对象实例。

https://stackoverflow.com/questions/285061/

相关文章:

python - django 导入错误 - 没有名为 core.management 的模块

python - 如何覆盖 Python 中的 [] 运算符?

linux - 对制表符分隔的文件进行排序

python - 在 Python 中,如何拆分字符串并保留分隔符?

linux - 强制卸载 NFS 挂载的目录

python - 如何重命名 conda 环境?

linux - 解压目录中的所有文件

python - 如何从生成器中只选择一项?

linux - ld 找不到现有的库

linux - Linux中的缓冲区和高速缓存有什么区别?