自定义一个类,通过覆写和不覆写__eq__方法,自行设计一个实验来验证关键字 in 的判断依据是“==”,以及 set 中数据是否重复也是通过“==”进行判断。
时间: 2024-04-30 21:20:07 浏览: 60
判断是否重复输入数据
可以自定义一个 Point 类,并实现 __eq__ 方法来验证关键字 in 的判断依据是“==”:
```python
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __eq__(self, other):
return self.x == other.x and self.y == other.y
```
接下来我们可以定义一个包含 Point 对象的列表,并使用关键字 in 来判断其中是否包含某个 Point 对象:
```python
points = [Point(1, 2), Point(3, 4), Point(5, 6)]
p = Point(1, 2)
print(p in points) # True
```
可以看到,使用关键字 in 来判断一个对象是否在列表中时,会调用对象的 __eq__ 方法来进行判断,即判断两个对象是否相等。
另外,set 中的数据是否重复也是通过“==”进行判断。我们可以定义一个包含 Point 对象的 set,并添加两个相同的 Point 对象:
```python
point_set = set()
point_set.add(Point(1, 2))
point_set.add(Point(1, 2))
print(point_set) # {<__main__.Point object at 0x7f9f9195b400>}
```
可以看到,set 中只包含一个 Point 对象,说明 set 中的数据不会重复。这是因为 set 在添加元素时,会先判断元素是否已经存在于 set 中,判断的依据也是对象的 __eq__ 方法。如果两个对象相等,则认为它们是同一个元素,不会重复添加。
阅读全文