Mulai sekarangMulai gratis

Memeriksa kesetaraan kelas

Pada latihan sebelumnya, Anda mendefinisikan kelas BankAccount dengan atribut number yang digunakan untuk perbandingan. Namun, jika Anda membandingkan objek BankAccount dengan objek dari kelas lain yang juga memiliki atribut number, hasilnya bisa tidak terduga.

Sebagai contoh, perhatikan dua kelas berikut


class Phone:
  def __init__(self, number):
     self.number = number

  def __eq__(self, other):
    return self.number == \
          other.number

pn = Phone(873555333)

class BankAccount:
  def __init__(self, number):
     self.number = number

  def __eq__(self, other):
    return self.number == \
           other.number

acct = BankAccount(873555333)

Menjalankan acct == pn akan menghasilkan True, meskipun kita membandingkan nomor telepon dengan nomor rekening bank.

Sebaiknya periksa kelas objek yang diteruskan ke metode __eq__() untuk memastikan perbandingannya masuk akal.

Latihan ini merupakan bagian dari kursus

Pemrograman Berorientasi Objek di Python

Lihat Kursus

Instruksi latihan

Kedua kelas, Phone dan BankAccount, telah didefinisikan. Cobalah menjalankan kode apa adanya menggunakan tombol "Run code" dan periksa keluarannya.

  • Ubah definisi BankAccount agar hanya mengembalikan True jika atribut number sama dan type() dari kedua objek yang diteruskan juga sama.

Jalankan kembali kodenya dan periksa keluarannya.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

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