MulaiMulai sekarang secara 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 mengembalikan True, meskipun yang dibandingkan adalah nomor telepon dengan nomor rekening bank.

Merupakan praktik yang baik untuk memeriksa kelas objek yang diteruskan ke metode __eq__() guna memastikan perbandingan tersebut masuk akal.

Latihan ini adalah bagian dari kursus

Pengantar Pemrograman Berorientasi Objek di Python

Lihat Kursus

Petunjuk latihan

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

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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