Controllare l'uguaglianza di classe
Nel precedente esercizio hai definito una classe BankAccount con un attributo number usato per i confronti. Ma se confronti un oggetto BankAccount con un oggetto di un'altra classe che ha anch'esso un attributo number, potresti ottenere risultati inaspettati.
Per esempio, considera due classi
|
|
Eseguendo acct == pn otterrai True, anche se stai confrontando un numero di telefono con un numero di conto bancario.
È buona pratica controllare la classe degli oggetti passati al metodo __eq__() per assicurarti che il confronto abbia senso.
Questo esercizio fa parte del corso
Introduzione alla programmazione orientata agli oggetti in Python
Istruzioni dell'esercizio
- Modifica la definizione di
BankAccountaffinché restituiscaTruesolo se l'attributonumberè lo stesso e iltype()di entrambi gli oggetti passati è lo stesso. - Verifica se
acctepnsono uguali.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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(____)