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
, bien qu'il compare un numéro de téléphone avec 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
Introduction à la programmation orientée objet en Python
Instructions
- 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. - Vérifiez si
acct
etpn
sont égaux.
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 class type
def __eq__(self, other):
return (self.number == other.number) ____
acct = BankAccount(873555333)
pn = Phone(873555333)
# Check if the two objects are equal
print(____)