1. Learn
  2. /
  3. Курси
  4. /
  5. Вступ до обʼєктно-орієнтованого програмування в Python

Connected

вправа

Перевірка рівності класів

У попередній вправі ви визначили клас BankAccount з атрибутом number, який використовувався для порівняння. Але якщо порівняти об'єкт BankAccount з об'єктом іншого класу, який також має атрибут number, можна отримати неочікувані результати.

Наприклад, розгляньмо два класи


class Phone:
    def __init__(self, number):
        self.number = number

    def __eq__(self, other):
        return self.number == \
               other.number

pn = Phone(873555333)

class BankAccount:
    def __init__(self, number):
        self.number = number

    def __eq__(self, other):
        return self.number == \
               other.number

acct = BankAccount(873555333)

Виконання acct == pn поверне True, хоча це порівняння телефонного номера з номером банківського рахунку.

Доброю практикою є перевіряти клас об'єктів, переданих у метод __eq__(), щоб упевнитися, що порівняння має сенс.

Інструкції

100 XP
  • Змініть визначення BankAccount, щоб воно повертало True лише якщо атрибут number однаковий, і type() обох об'єктів, переданих у метод, також однаковий.
  • Перевірте, чи acct і pn рівні.