首页 > 解决方案 > python程序重载'=='运算符以打印具有相同分数的学生的详细信息

问题描述

在这里,我必须创建一个具有以下成员属性的班级学生:卷号、姓名、年龄和总分。创建合适的方法来读取和打印成员变量,还可以重载“==”运算符以打印具有相同分数的学生的详细信息。在这里,我找不到如何为标记重载 == 运算符的方法。在这里我有错误。

class Student():


    def __init__(self,r_no,name,age,marks):
        self.r_no = r_no
        self.name = name
        self.age = age
        self.marks = marks


    def displayStudent(self):
        print ("Roll no : ", self.r_no, "Name : ", self.name,  ", Age: ", self.age,  ", Marks: ", self.marks)


    def __str__(self):
        return "({0},{1},{3},{4})".format(self.r_no,self.name,self.age,self.marks)

    def __eq__(self,other):
        if(self.marks==other.marks):
            return self.marks==other.marks


stu = []

for i in range (1,3):
    print("Enter Details for Students %d" % (i))
    r_no = int(input("Enter Roll no:"))
    name = input("Enter Name:")
    age = int(input("Enter Age:"))
    marks = input("Enter Marks:")
    stu.append(Student(r_no,name,age,marks))



for s in stu:
    s.displayStudent()

标签: pythonoperator-overloading

解决方案


要报告两个学生是平等的,因为他们有相同的分数,__eq__函数应该如下所示:

def __eq__(self, other):
    return self.marks == other.marks

True如果标记相同则返回,False否则返回

然后这段代码分别返回TrueFalse

print(Student(1, 'test1', 20, 4) == Student(2, 'test2', 30, 4))  # True
print(Student(3, 'test3', 0, 1) == Student(3, 'test3', 0, 2))  # False

推荐阅读