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

AttributeError: 'Stud' object has no attribute 'sno'(第11行)报错问题咨询

报错产生原因
  • 你的代码在__init__构造方法的第一行就调用了displval()方法,而displval()中需要访问实例属性self.sno、self.sname
  • Python的类实例属性是执行到对应的赋值语句时才会被创建,你调用displval()的时候,self.sno = int(input(...))、self.sname = input(...)这两行赋值语句还没有执行,实例根本不存在sno这个属性,所以触发了AttributeError。
解决方案

最常用的方案是调整__init__方法内的执行顺序,先完成属性赋值再调用打印方法,修改后的代码如下:

class Stud:
    def __init__(self):
        print("I am Constructor")    
        self.sno = int(input("Enter the roll number"))
        self.sname = input("Enter the Name")
        # 赋值完成后再调用打印方法
        self.displval()
    def displval(self):
        print("="*50)
        print(self.sno)
        print(self.sname)

so = Stud() 

如果业务逻辑确实需要在赋值前调用displval(),可以在类定义阶段给属性设置默认初始值:

class Stud:
    # 提前设置类属性默认值,实例未赋值时会自动 fallback 到类属性
    sno = None
    sname = None
    def __init__(self):
        self.displval()
        print("I am Constructor")    
        self.sno = int(input("Enter the roll number"))
        self.sname = input("Enter the Name")
    def displval(self):
        print("="*50)
        print(self.sno)
        print(self.sname)

so = Stud() 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:15:01