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

Python中如何使用变量值而非变量名访问对象属性

解决通过字符串属性名访问对象属性的问题

嘿,刚学Python的时候我也被这个问题卡过!你遇到的核心问题是:mem是存储属性名字符串的变量,直接写obj.mem的话,Python会去找obj上名为mem的属性,而不是mem变量里存的那个字符串对应的属性。

解决方案:使用getattr()函数

Python内置的getattr()函数就是专门干这个的——它接受对象和属性名字符串,返回该对象对应属性的值。用法非常直观:

getattr(obj, 属性名字符串)

修改你的代码

把原来的self.table.add_row(f"{obj.}")改成用getattr()获取属性值,修改后的完整代码如下:

def populate(self, att, obj):
    ans = []
    for item in att:
        item = item.replace(obj.__class__.__name__, "")
        ans.append(item)
    for mem in ans:
        # 通过getattr根据字符串获取obj的对应属性值
        attribute_value = getattr(obj, mem)
        self.table.add_row(f"{attribute_value}")
    self.console.print(self.table)

额外小提示

如果担心ans里的字符串可能不是obj的有效属性(避免运行时报错),可以给getattr()加个默认值参数:

attribute_value = getattr(obj, mem, "属性不存在")

这样当属性名不存在时,会返回你指定的默认值,而不是抛出AttributeError异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 17:20:19