Vérifier l’égalité des classes
Dans l’exercice précédent, vous avez défini une classe BankAccount avec un attribut number utilisé pour les comparaisons. Mais si vous comparez un objet BankAccount à un objet d’une autre classe qui possède aussi un attribut number, vous pourriez obtenir des résultats inattendus.
Par exemple, considérez deux classes
|
|
Exécuter acct == pn renverra True, même si l’on compare un numéro de téléphone à un numéro de compte bancaire.
Il est recommandé de vérifier la classe des objets passés à la méthode __eq__() pour s’assurer que la comparaison a du sens.
Cet exercice fait partie du cours
Programmation orientée objet en Python
Instructions
Les classes Phone et BankAccount ont toutes deux été définies. Essayez d’exécuter le code tel quel avec le bouton "Exécuter le code" et examinez le résultat.
- Modifiez la définition de
BankAccountpour ne retournerTrueque si l’attributnumberest identique et que letype()des deux objets passés est le même.
Exécutez à nouveau le code et examinez le résultat.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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)