Verificare l'uguaglianza delle classi
Nel precedente esercizio hai definito una classe BankAccount con un attributo number usato per i confronti. Ma se confrontassi 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 assicurarsi che il confronto abbia senso.
Questo esercizio fa parte del corso
Programmazione orientata agli oggetti in Python
Istruzioni dell'esercizio
Sia le classi Phone che BankAccount sono già state definite. Prova a eseguire il codice così com'è usando il pulsante "Esegui codice" ed esamina l'output.
- Modifica la definizione di
BankAccountin modo che restituiscaTruesolo se l'attributonumberè lo stesso e iltype()di entrambi gli oggetti passati è lo stesso.
Esegui di nuovo il codice ed esamina l'output.
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 type()
def __eq__(self, other):
return (self.number == other.number)
acct = BankAccount(873555333)
pn = Phone(873555333)
print(acct == pn)