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

Python报错AttributeError:'Student'对象无'on_honor_roll'属性如何修复

错误原因
  • 缩进错误:on_honor_roll 方法被写在了 __init__ 构造方法的内部,成为了构造方法的局部函数,不属于 Student 类的实例方法,因此无法通过类实例访问。
  • 执行顺序错误:Python代码从上到下顺序执行,你将类定义写在了实例化、调用方法的代码之后,同时多余的 from Student import Student 语句会优先尝试导入外部的Student模块,不会使用你当前文件里写的Student类。
修复方案

如果是单文件运行,调整代码缩进和执行顺序即可,修复后代码如下:

class Student:
    def __init__(self, name,  major, gpa):
        self.name = name
        self.major = major
        self.gpa = gpa

    # 调整缩进,与__init__方法平级,属于Student类的实例方法
    def on_honor_roll(self):
        return self.gpa >= 3.5

# 类定义完成后再执行实例化、方法调用逻辑
student1 = Student("Oscar", "Accounting", 3.1)
student2 = Student("Phyllis", "Business", 3.8)

print(student1.on_honor_roll())

如果是分双文件的项目结构,需要将修复缩进后的Student类代码单独存为Student.py文件,主运行文件保留from Student import Student和后续的实例化、打印代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:57:03