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

Python中如何通过变量获取自定义类实例的对应属性值

报错原因

你使用data[var]的下标访问方式要求对象实现__getitem__魔法方法,你自定义的Data类默认没有实现该方法,因此触发类型错误。

正确实现方案

方案1:使用内置getattr函数(最推荐)

getattr是Python官方提供的、专门用于通过字符串名称获取对象属性的方法,修改后的代码如下:

def showData(var):
    data = Data()
    return getattr(data, var)

print(showData('one'))
# 运行输出:One

如果需要避免传入不存在的属性名时报错,可以给getattr设置第三个默认返回值:

return getattr(data, var, '未找到对应属性')

方案2:为类实现__getitem__方法适配下标访问

如果你希望保留data[var]的写法,可以在Data类中新增__getitem__魔法方法:

class Data():
    one = 'One'
    two = 'Two'
    
    def __getitem__(self, key):
        # 内部通过getattr取属性,对外支持下标访问
        return getattr(self, key)

def showData(var):
    data = Data()
    return data[var]

print(showData('one'))
# 运行输出:One

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:24:03