python中的def __eq__
时间: 2023-10-22 07:03:40 浏览: 150
在Python中,`__eq__`是一个特殊的方法,用于判断两个对象是否相等。当我们使用`==`运算符来比较两个对象时,实际上就是调用了对象的`__eq__`方法来进行比较。
`__eq__`方法的默认实现是比较两个对象的内存地址是否相等。如果我们想要比较对象的属性是否相等,就需要在类中重写`__eq__`方法,并根据自己的需要来实现比较逻辑。
例如,我们定义了一个名为`Person`的类,其中包含`name`和`age`两个属性。为了判断两个`Person`对象是否相等,我们可以在类中定义如下方法:
```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
```
在上面的代码中,我们重写了`__eq__`方法,首先判断`other`是否也是`Person`对象,然后再逐个比较`name`和`age`属性是否相等。如果相等,就返回`True`,否则返回`False`。
这样,当我们使用`==`运算符来比较两个`Person`对象时,就会调用我们自定义的`__eq__`方法来进行比较。例如:
```python
p1 = Person('Lucy', 18)
p2 = Person('Lucy', 18)
print(p1 == p2) # True
```
注意,当我们重写`__eq__`方法时,建议同时重写`__hash__`方法,以保证对象可以正确地被放入散列表中。具体的实现方式可以参考Python官方文档中的相关说明。
阅读全文