如何解决AttributeError: 'Student' 对象没有属性 'calculateGrade'
class Student:
def __init__(self,name,id,standard,phyMarks,chemmarks,mathsMarks):
self.name = name
self.id = id
self.standard = standard
self.phyMarks = phyMarks
self.chemmarks = chemmarks
self.mathsMarks = mathsMarks
def calculateGrade(Student):
if self.phyMarks + self.chemmarks + self.mathsMarks >= 250:
return "A"
elif self.phyMarks + self.chemmarks + self.mathsMarks >= 150:
return "B"
else:
return "C"
def haspassed(Student):
if calculateGrade() == "C":
return "Failed"
else:
return "Passed"
Raghav = Student("Raghav",1,9,23,56,10)
Madhav = Student("Madhav",2,98,79,83)
Hemant = Student("Hemant",3,99,100,100)
Harish = Student("Harish",4,89,72,68)
Raunak = Student("Raunak",5,100)
print("Student with name",Raghav.name,Raghav.id,"has scored grade",Raghav.calculateGrade(),".","So his pass status is,",Raghav.hasPassed())
print("Student with name",Madhav.name,Madhav.id,Madhav.calculateGrade(),Madhav.hasPassed())
print("Student with name",Raunak.name,Raunak.id,Raunak.calculateGrade(),Raunak.hasPassed())
我没有在打印语句中获得 calculateGrade 和 hasPassed 属性。请帮忙,因为我有这个作业。给定的问题是 - 创建一个名为 student 的 Python 类 给出名为 name、id、standard、physicsMarks、chemistryMarks、mathsMarks 的属性,定义 2 个方法 calculateGrade() 和 hasPassed() 如果标记 >=250 -> A 如果标记 >= 150 - > B 否则 C 如果学生的成绩为 C 则他不及格,否则通过 创建至少 5 个实例 print("student with name",shubham.name,and id:,shubham.id 的成绩是 shubham.calculateGrade()。所以他的通过状态是 shubham,hasPassed())
解决方法
有两点需要考虑。缩进和“自我”。
class Student:
def __init__(self,name,id,standard,phyMarks,chemMarks,mathsMarks):
# do something
def calculateGrade(Student):
# do something
def haspassed(Student):
# do something
因为 calculateGrade()
和 haspassed()
缩进太多,它成为 __init__()
的一部分
尽管在类函数中使用 Student
作为第一个参数是可行的,但使用标准 self
被认为是最佳实践。
您的代码应该更像这样:
class Student:
def __init__(self,mathsMarks):
# do something
def calculateGrade(self):
# do something
def haspassed(self):
# do something
编辑添加:
另外,也许再看看这个问题。不是为您做功课,而是鼓励您仔细考虑选项。
...如果学生的成绩是 C 则不及格,否则通过。
...所以他的通过状态是 shubham.hasPassed()
这听起来像是一个真/假的情况。如果有人想进行大量调用以检查通过/失败状态,则需要每次都运行 calculateGrades()
函数,这是额外的处理。在课堂上用其他方式记录结果是否有意义?仅供参考。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。