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
<cours>Programmation orientée objet en Python</cours>Instructions de l’exercice
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 ce code d’exemple.
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)