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
BankAccountpour qu'elle ne renvoieTrueque si l'attributnumberest 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)