1. Обучение
  2. /
  3. Курса
  4. /
  5. Объектно-ориентированное программирование на Python

Connected

Упражнение

Перегрузка оператора равенства

Когда вы сравниваете два объекта пользовательского класса с помощью ==, Python по умолчанию сравнивает ссылки на объекты, а не данные, которые в них хранятся. Чтобы изменить это поведение, в классе можно реализовать специальный метод __eq__(). Он принимает два аргумента — сравниваемые объекты — и возвращает True или False. Этот метод вызывается неявно при каждом сравнении двух объектов.

Класс BankAccount из предыдущей главы уже доступен в панели с кодом. У него есть один атрибут — balance — и метод withdraw(). Два банковских счёта с одинаковым балансом не обязательно являются одним и тем же счётом. Однако у каждого счёта обычно есть номер, и два счёта с одинаковым номером следует считать одним и тем же счётом.

Инструкции

100 XP

Выделите код в строках 1–7 и нажмите кнопку «Запустить код». Затем создайте несколько объектов BankAccount в консоли и сравните их.

  • Измените метод __init__(), добавив новый параметр number, и инициализируйте соответствующий атрибут number.
  • Определите метод __eq__(), который возвращает True, если атрибуты number двух объектов совпадают.
  • Изучите операторы вывода и результат в консоли.