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

