AttributeError: 'Student' 对象没有属性 'calculateGrade'

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?