Sprawdzanie równości klas
W poprzednim ćwiczeniu zdefiniowano klasę BankAccount z atrybutem number, który służył do porównań. Jeśli jednak porównasz obiekt klasy BankAccount z obiektem innej klasy, która również ma atrybut number, możesz otrzymać nieoczekiwane wyniki.
Rozważ na przykład dwie klasy:
|
|
Wywołanie acct == pn zwróci True, mimo że porównuje numer telefonu z numerem konta bankowego.
Dobrą praktyką jest sprawdzanie klasy obiektów przekazywanych do metody __eq__(), aby upewnić się, że porównanie ma sens.
To ćwiczenie jest częścią kursu
Wprowadzenie do programowania obiektowego w Pythonie
Instrukcje do ćwiczenia
- Zmodyfikuj definicję klasy
BankAccounttak, aby zwracałaTruetylko wtedy, gdy atrybutnumberjest taki sam oraztype()obu przekazanych obiektów jest identyczny. - Sprawdź, czy
acctipnsą sobie równe.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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(____)