Метод __eq__ в ООП в Python
Оператор == для обычного класса
проверяет, указывают ли переменные
на один и тот же объект. Чтобы два
объекта с одинаковыми данными считались
равными через ==, используют
специальный метод __eq__.
Пусть у нас дан вот такой класс User:
class User:
def __init__(self, name, age):
self.name = name
self.age = age
Создадим два объекта с одинаковыми значениями свойств:
user1 = User('john', 25)
user2 = User('john', 25)
print(user1 == user2) # выведет False
print(user1 is user2) # выведет False
Добавим метод __eq__. Он получает
второй объект и возвращает True,
если данные совпадают:
class User:
def __init__(self, name, age):
self.name = name
self.age = age
def __eq__(self, other):
if not isinstance(other, User):
return False
return self.name == other.name and self.age == other.age
Проверим:
user1 = User('john', 25)
user2 = User('john', 25)
print(user1 == user2) # выведет True
print(user1 is user2) # выведет False
Сделайте класс Employee с именем
и зарплатой. Реализуйте метод __eq__,
чтобы объекты с одинаковыми данными
были равны через ==.