Перевірка рівності класів
У попередній вправі ви визначили клас BankAccount з атрибутом number, який використовувався для порівняння. Але якщо порівняти об'єкт BankAccount з об'єктом іншого класу, що також має атрибут number, можна отримати неочікувані результати.
Наприклад, розгляньте два класи
|
|
Виконання acct == pn поверне True, хоча ми порівнюємо номер телефону з номером банківського рахунку.
Доброю практикою є перевірка класу об'єктів, переданих у метод __eq__(), щоб упевнитися, що порівняння має сенс.
Ця вправа є частиною курсу
Об'єктноорієнтоване програмування в Python
Інструкції до вправи
Класи Phone і BankAccount уже визначені. Спробуйте запустити код як є за допомогою кнопки "Run code" і перегляньте результат.
- Змініть визначення
BankAccount, щоб воно поверталоTrueлише якщо атрибутnumberоднаковий іtype()обох переданих об'єктів однаковий.
Запустіть код і знову перегляньте результат.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
class BankAccount:
def __init__(self, number, balance=0):
self.number, self.balance = number, balance
def withdraw(self, amount):
self.balance -= amount
# MODIFY to add a check for the type()
def __eq__(self, other):
return (self.number == other.number)
acct = BankAccount(873555333)
pn = Phone(873555333)
print(acct == pn)