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

Python中如何通过用户输入的字符串访问类的属性变量?

错误原因

你写的Abc.p是直接查找Abc类下名为p的属性,Python不会自动将p变量存储的字符串值替换为属性名做查询,所以才会触发「不存在p属性」的报错。

解决方案

使用Python内置的getattr()函数即可实现通过字符串访问对象/类的属性,该函数语法为getattr(目标对象/类, 属性名字符串, [默认值]),第三个可选的默认值参数可以在属性不存在时返回默认值,避免抛出错误。

修正后可运行代码
class Abc:
    a = 2
    b = 3
    c = 4

    # 改为静态方法,支持直接通过类调用,无需传递self参数
    @staticmethod
    def abc(x, y):
        return x + y

def main():
    p = input("Enter the variable name:")
    q = input("Enter the variable name:")
    # 通过getattr获取字符串对应的类属性值
    val_p = getattr(Abc, p)
    val_q = getattr(Abc, q)
    result = Abc.abc(val_p, val_q)
    print(result) # 输入a、b时输出结果为5

if __name__ == "__main__":
    main()
额外注意事项
  • 如果你不想修改原类的abc方法定义,调用方法时需要先实例化Abc类,用实例调用实例方法:
    obj = Abc()
    result = obj.abc(val_p, val_q)
    
  • 若需要兼容用户输入不存在属性的场景,可给getattr添加默认值,示例:
    # 属性不存在时返回0,避免报错
    val_p = getattr(Abc, p, 0)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:27:02