python - 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()
解决方案
要报告两个学生是平等的,因为他们有相同的分数,__eq__
函数应该如下所示:
def __eq__(self, other):
return self.marks == other.marks
True
如果标记相同则返回,False
否则返回
然后这段代码分别返回True
和False
。
print(Student(1, 'test1', 20, 4) == Student(2, 'test2', 30, 4)) # True
print(Student(3, 'test3', 0, 1) == Student(3, 'test3', 0, 2)) # False