Проверка равенства классов
В предыдущем упражнении вы определили класс BankAccount с атрибутом number, который использовался для сравнения. Однако если сравнить объект BankAccount с объектом другого класса, у которого тоже есть атрибут number, можно получить неожиданные результаты.
Рассмотрим два класса:
|
|
Выражение acct == pn вернёт True, хотя в данном случае сравниваются номер телефона и номер банковского счёта.
Хорошей практикой является проверка класса объектов, передаваемых в метод __eq__(), чтобы убедиться, что сравнение имеет смысл.
Это упражнение является частью курса
Введение в объектно-ориентированное программирование на Python
Инструкции к упражнению
- Измените определение класса
BankAccountтак, чтобы метод возвращалTrueтолько в том случае, если атрибутnumberсовпадает иtype()обоих переданных объектов одинаков. - Проверьте, равны ли объекты
acctиpn.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
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 class type
def __eq__(self, other):
return (self.number == other.number) ____
acct = BankAccount(873555333)
pn = Phone(873555333)
# Check if the two objects are equal
print(____)