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

2024-09-29 01:24:13 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的程序中,我基本上想返回一个方法的结果,该方法测试两个学生之间是否相等(即如果两个学生上的课数相等)

我创建了一个名为学生的班级。然后我创建了两个函数并定义了它们的属性。实际上,我试图比较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, in

print (mike.equals(john)) TypeError: equals() takes 1 positional argument but 2 were given


Tags: and对象方法nameselfageisdef
2条回答

self添加到equals function参数中

def equals (self,student):

在python中,实例方法将self作为第一个参数,以引用调用它们的实例:

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

也就是说,您可以考虑重写dunder method__eq__

^{pr2}$

这将允许您通过==以更pythonical的方式测试相等性:

mike == john

相关问题 更多 >