CommencerCommencer gratuitement

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


classe Téléphone :

    def __init__(self, number) :

        self.number = number



    def __eq__(self, other):

        return self.number == \

               other.number




pn = Phone(873555333)

classe BankAccount :

    def __init__(self, number) :

        self.number = number



    def __eq__(self, other):

        return self.number == \

               other.number




acct = BankAccount(873555333)

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

Afficher le cours

Instructions

  • Modifiez la définition de BankAccount pour qu'elle ne renvoie True que si l'attribut number est identique et que l'attribut type() des deux objets qui lui sont transmis est identique.
  • Vérifiez si acct et pn 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(____)
Modifier et exécuter le code