ComenzarEmpieza gratis

Comprobación de la igualdad de clases

En el ejercicio anterior, definiste una clase BankAccount con un atributo number que se utilizaba para comparar. Pero si compararas un objeto BankAccount con un objeto de otra clase que también tuviera el atributo number, podrías obtener resultados inesperados.

Por ejemplo, considera dos clases


Teléfono de la clase:

    def __init__(yo, número):

        auto.número = número



    def __eq__(self, other):

        return self.number == \

               other.number




pn = Phone(873555333)

clase Cuenta bancaria:

    def __init__(yo, número):

        auto.número = número



    def __eq__(self, other):

        return self.number == \

               other.number




acct = Cuenta bancaria(873555333)

Ejecutar acct == pn devolverá True, aunque compare un número de teléfono con un número de cuenta bancaria.

Es una buena práctica comprobar la clase de los objetos pasados al método __eq__() para asegurarse de que la comparación tiene sentido.

Este ejercicio forma parte del curso

Introducción a la Programación Orientada a Objetos en Python

Ver curso

Instrucciones de ejercicio

  • Modifica la definición de BankAccount para que sólo devuelva True si el atributo number es el mismo y el type() de ambos objetos que se le pasan es el mismo.
  • Comprueba si acct y pn son iguales.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

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(____)
Editar y ejecutar código