python __eq__
时间: 2023-10-16 07:28:12 浏览: 37
`__eq__` 是 Python 中的一个特殊方法,用于定义对象之间的相等性。当两个对象使用 `==` 运算符进行比较时,Python 解释器会自动调用这个方法。
`__eq__` 方法应该返回一个布尔值,表示两个对象是否相等。通常情况下,我们会比较对象的属性是否相等,如下所示:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __eq__(self, other):
if isinstance(other, Person):
return self.name == other.name and self.age == other.age
return False
```
在上面的例子中,我们定义了一个 `Person` 类,重写了 `__eq__` 方法,当比较两个 `Person` 对象时,只有当它们的 `name` 和 `age` 属性都相等时,才认为它们是相等的。
相关问题
python实现__eq
__eq__是Python中的一个特殊方法(也称为魔术方法),用于定义对象之间的相等性比较。它的作用类似于Java中的equals方法。
在Python中,我们可以通过在类中定义__eq__方法来自定义对象之间的相等性比较。该方法接受一个参数,即要比较的对象,然后返回一个布尔值,表示两个对象是否相等。
下面是一个示例代码,演示了如何在Python中实现__eq__方法:
```
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __eq__(self, other):
if isinstance(other, Point):
return self.x == other.x and self.y == other.y
return False
p1 = Point(2, 3)
p2 = Point(2, 3)
p3 = Point(4, 5)
print(p1 == p2) # True
print(p1 == p3) # False
```
在上面的示例中,我们定义了一个Point类,并在该类中实现了__eq__方法。该方法首先检查要比较的对象是否是Point对象,然后比较它们的x和y属性是否相等。如果是,则返回True,否则返回False。
我们创建了两个Point对象p1和p2,它们的x和y属性都相等,因此p1 == p2返回True。另外,我们创建了另一个Point对象p3,它的x和y属性与p1不同,因此p1 == p3返回False。
__eq__ python用法
__eq__ 是 Python 中的一个特殊方法,用于比较两个对象是否相等。当我们使用 == 运算符比较两个对象时,实际上是调用了对象的 __eq__ 方法。默认情况下,Python 会比较两个对象的内存地址是否相等,也就是它们是否是同一个对象。如果我们想要比较两个对象的属性是否相等,就需要重写 __eq__ 方法。
下面是一个简单的例子:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __eq__(self, other):
if isinstance(other, Person):
return self.name == other.name and self.age == other.age
return False
p1 = Person('Alice', 25)
p2 = Person('Bob', 30)
p3 = Person('Alice', 25)
print(p1 == p2) # False
print(p1 == p3) # True
```
在这个例子中,我们定义了一个 Person 类,并重写了它的 __eq__ 方法。在 __eq__ 方法中,我们首先判断 other 是否是 Person 类型的对象,如果是,则比较两个对象的 name 和 age 属性是否相等,如果都相等,则返回 True,否则返回 False。