1. Apprendre
  2. /
  3. Cours
  4. /
  5. Introduction à la programmation orientée objet en Python

Connected

Exercice

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 la comparaison. Cependant, 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


class Phone:
    def __init__(self, number):
        self.number = number

    def __eq__(self, other):
        return self.number == \
               other.number

pn = Phone(873555333)

class BankAccount:
    def __init__(self, number):
        self.number = number

    def __eq__(self, other):
        return self.number == \
               other.number

acct = BankAccount(873555333)

Exécuter acct == pn retournera True, même si cela compare un numéro de téléphone à un numéro de compte bancaire.

Il est recommandé de vérifier la classe des objets transmis à la méthode __eq__() pour s'assurer que la comparaison a du sens.

Instructions

100 XP
  • Modifiez la définition de BankAccount pour ne retourner True que si l'attribut number est le même et si le type() des deux objets transmis est identique.
  • Vérifiez si acct et pn sont égaux.