Vérification de l'égalité des classes
Dans l'exercice précédent, vous avez défini une classe BankAccount
avec un attribut number
qui a été utilisé pour la comparaison. Mais si vous comparez un objet BankAccount
à un objet d'une autre classe qui possède également un attribut number
, vous risquez d'obtenir des résultats inattendus.
Prenons l'exemple de deux classes
|
|
L'exécution de acct == pn
renverra True
, même si nous comparons un numéro de téléphone à un numéro de compte bancaire.
Il est conseillé de vérifier la classe des objets transmis à la méthode __eq__()
pour s'assurer que la comparaison a un sens.
Cet exercice fait partie du cours
Programmation orientée objet en Python
Instructions
Les classes Phone
et BankAccount
ont été définies. Essayez d'exécuter le code tel quel en utilisant le bouton "Exécuter le code" et examinez la sortie.
- Modifiez la définition de
BankAccount
pour qu'elle ne renvoieTrue
que si l'attributnumber
est identique et que l'attributtype()
des deux objets qui lui sont transmis est identique.
Exécutez le code et examinez à nouveau la sortie.
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)