TypeError:equals()接受1个位置参数,但给出了2个

在我的程序中,我本质上是想返回一个测试两个学生之间是否相等的方法的结果(即,如果两个学生都参加的班级数量相等)

我创建了一个名为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))

我不断收到错误消息:

  

输入回溯(最近一次通话):
  

中的文件“ main.py”,第18行      

print(mike.equals(john))TypeError:equals()接受1个位置参数,但给出了2个

pf030232 回答:TypeError:equals()接受1个位置参数,但给出了2个

self添加到您的equals function参数

def equals (self,student):
,

在python中,实例方法采用self作为引用实例的第一个参数:

def equals(self,student):
    # ...

话虽如此,您可以考虑覆盖dunder method __eq__

def __eq__(self,other):
    # ...

这将使您可以通过==通过Python进行更平等的测试:

mike == john
本文链接:https://www.f2er.com/3117098.html

大家都在问