Python - 比较2个相同的对象返回False?

dan*_*tin 0 python equality

我已经定义了一个类:

class User:

    Name = ""
    Age = ""
    Gender = ""

    def __init__(self, var1, var2, var3):
        self.Name = var1
        self.Age = var2
        self.Gender = var3

    def __hash__(self):
        return hash(self.Name)
Run Code Online (Sandbox Code Playgroud)

现在,当我创建两个相同的对象:

User1 = User("Ted", "43", "M")
User2 = User("Ted", "43", "M")
Run Code Online (Sandbox Code Playgroud)

并试图比较它们:

print(User1 == User2)
Run Code Online (Sandbox Code Playgroud)

它回来了False吗?

Mur*_*nik 6

您需要覆盖该__eq__方法:

def __eq__(self, other):
    if isinstance(other, User):
        return self.Name == other.Name and \
               self.Age == other.Age and \
               self.Gender == other.Gender
    return NotImplemented
Run Code Online (Sandbox Code Playgroud)