在这里,我必须创建一个具有以下成员属性的班级学生:卷号,姓名,年龄和总分。创建用于读取和打印成员变量的合适方法,并使“ ==”运算符重载以打印具有相同分数的学生的详细信息。在这里,我找不到方法如何重载==运算符来标记。这里我有错误。
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()
答案 0 :(得分:0)
要报告两个学生都等于给定它们具有__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
答案 1 :(得分:0)
您需要使用def __eq__
条件来代替if
,例如
if(stu[0].marks==stu[1].marks):
print("marks of ",stu[0].name,"&",stu[1].name," is same")
else:
print("not same")
或者,如果您的数据量不止两个学生,那么也可以使用for
循环。有关更多详细信息,请查看我在此处顶部链接的图像。