如何在Python函数中调用类属性?解决AttributeError报错
修复动态获取对象属性的AttributeError错误
错误原因
你的printer函数中,student.parameter_name的写法是直接查找对象上名为parameter_name的属性,而非将传入的parameter_name变量值作为属性名去查找,这就导致Python找不到对应属性,抛出AttributeError。
修复方案
使用Python内置的getattr()函数,它支持动态传入属性名来获取对象属性,这是处理这类需求的标准方式:
修改后的函数:
def printer(student_obj, parameter_name): print(getattr(student_obj, parameter_name))
注意:将参数名
student改为student_obj是为了避免和你的类名student冲突,提升代码可读性。
调用时需要传入字符串形式的属性名(之前直接写age会被当作未定义的变量,引发NameError):
s1 = student('John', '14', '9927') printer(s1, 'age') # 输出:14 printer(s1, 'name') # 输出:John
完善版本(添加错误处理)
如果担心传入不存在的属性名,可以加入异常捕获,避免程序崩溃:
def printer(student_obj, parameter_name): try: print(getattr(student_obj, parameter_name)) except AttributeError: print(f"student对象不存在'{parameter_name}'属性")
内容的提问来源于stack exchange,提问作者Carlos
相关产品推荐
相关产品推荐

