Sobrecarga de la igualdad
Al comparar dos objetos de una clase personalizada mediante ==, Python compara por defecto sólo los trozos de memoria a los que apuntan los objetos, no los datos que contienen. Para anular este comportamiento, la clase puede implementar un método especial, que acepta dos argumentos, los objetos a comparar, y devuelve True o False. Este método será llamado implícitamente cuando se comparen dos objetos.
La clase BankAccount del capítulo anterior está a tu disposición en script.py. Tiene dos atributos, balance y number, y un método withdraw(). Dos cuentas bancarias con el mismo saldo no son necesariamente la misma cuenta, pero una cuenta bancaria suele tener un número de cuenta, y dos cuentas con el mismo número de cuenta deben considerarse la misma.
Este ejercicio forma parte del curso
Introducción a la Programación Orientada a Objetos en Python
Instrucciones del ejercicio
- Modifica el método
__init__()para que acepte un nuevo argumento llamadonumbere inicialice un nuevo atributonumber. - Define un método para comparar si el atributo
numberde dos objetos es igual.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
class BankAccount:
# Modify to initialize a number attribute
def __init__(self, ____, balance=0):
self.balance = balance
____
def withdraw(self, amount):
self.balance -= amount
# Define __eq__ that returns True if the number attributes are equal
def ____(____, ____):
return ____.number == ____.____
# Create accounts and compare them
acct1 = BankAccount(123, 1000)
acct2 = BankAccount(123, 1000)
acct3 = BankAccount(456, 1000)
print(acct1 == acct2)
print(acct1 == acct3)