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__(self, number):
     auto.número = número

  def __eq__(yo, otro):
    return auto.número == \
          other.number

pn = Phone(873555333)

clase Cuenta bancaria:
  def __init__(self, number):
     auto.número = número

  def __eq__(yo, otro):
    return auto.número == \
           other.number

acct = BankAccount(873555333)

Ejecutando acct == pn se obtendrá True, aunque estemos comparando 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

Programación orientada a objetos en Python

Ver curso

Instrucciones de ejercicio

Se han definido las clases Phone y BankAccount. Intenta ejecutar el código tal cual con el botón "Ejecutar código" y examina el resultado._

  • 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.

Ejecuta el código y examina de nuevo el resultado.

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 type()
    def __eq__(self, other):
        return (self.number == other.number)

acct = BankAccount(873555333)
pn = Phone(873555333)
print(acct == pn)
Editar y ejecutar código