MulaiMulai sekarang secara gratis

Overloading kesetaraan

Saat membandingkan dua objek dari kelas kustom menggunakan ==, Python secara bawaan hanya membandingkan lokasi memori yang ditunjuk oleh objek tersebut, bukan data yang dikandung objek. Untuk menimpa perilaku ini, kelas dapat mengimplementasikan sebuah metode khusus yang menerima dua argumen, yaitu objek yang akan dibandingkan, dan mengembalikan True atau False. Metode ini akan dipanggil secara implisit ketika dua objek dibandingkan.

Kelas BankAccount dari bab sebelumnya tersedia untuk Anda di script.py. Kelas ini memiliki dua atribut, balance dan number, serta metode withdraw(). Dua rekening bank dengan saldo yang sama belum tentu merupakan rekening yang sama, tetapi sebuah rekening bank biasanya memiliki nomor rekening, dan dua rekening dengan nomor rekening yang sama seharusnya dianggap sama.

Latihan ini adalah bagian dari kursus

Pengantar Pemrograman Berorientasi Objek di Python

Lihat Kursus

Petunjuk latihan

  • Ubah metode __init__() agar menerima argumen baru bernama number dan inisialisasi atribut number yang baru.
  • Definisikan sebuah metode untuk membandingkan apakah atribut number dari dua objek bernilai sama.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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)
    
Edit dan Jalankan Kode