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
相关产品推荐
相关产品推荐

