Gleichheit der Klassen prüfen
In der vorherigen Aufgabe hast du eine Klasse BankAccount mit einem Attribut number definiert, das für Vergleiche verwendet wurde. Wenn du jedoch ein BankAccount-Objekt mit einem Objekt einer anderen Klasse vergleichst, das ebenfalls ein Attribut number hat, kann es zu unerwarteten Ergebnissen kommen.
Betrachte zum Beispiel zwei Klassen
|
|
Das Ausführen von acct == pn gibt True zurück, obwohl eine Telefonnummer mit einer Kontonummer verglichen wird.
Es ist gute Praxis, in der Methode __eq__() die Klasse der übergebenen Objekte zu prüfen, um sicherzustellen, dass der Vergleich sinnvoll ist.
Diese Übung ist Teil des Kurses
Einführung in objektorientierte Programmierung in Python
Anleitung zur Übung
- Ändere die Definition von
BankAccountso, dassTruenur dann zurückgegeben wird, wenn das Attributnumbergleich ist und dertype()beider übergebener Objekte derselbe ist. - Prüfe, ob
acctundpngleich sind.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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(____)