在我的程序中,我基本上想返回一个方法的结果,该方法测试两个学生之间是否相等(即如果两个学生上的课数相等)
我创建了一个名为学生的班级。然后我创建了两个函数并定义了它们的属性。实际上,我试图比较student类中的两个对象,一个方法需要检查这两个对象之间是否相等。在
class Student:
def __init__(self, name, age, classesTaken):
self.name = name
self.age = age
self.classesTaken = classesTaken
def equals (student):
is_equals = student.name == self.name and student.age == self.age and
student.classesTaken == self.classesTaken
return is_equals
mike = Student("Mike", 21, 25)
john = Student("John", 19, 22)
#problem starts here
print (mike.equals(john))
我一直收到错误:
input Traceback (most recent call last):
File "main.py", line 18, inprint (mike.equals(john)) TypeError: equals() takes 1 positional argument but 2 were given
将
self
添加到equals function
参数中在python中,实例方法将
self
作为第一个参数,以引用调用它们的实例:也就是说,您可以考虑重写dunder method
^{pr2}$__eq__
:这将允许您通过
==
以更pythonical的方式测试相等性:相关问题 更多 >
编程相关推荐