BaşlayınÜcretsiz Başlayın

Sınıf eşitliğini kontrol etme

Önceki egzersizde, karşılaştırma için kullanılan bir number özniteliğine sahip bir BankAccount sınıfı tanımladın. Ancak number özniteliği olan başka bir sınıfın nesnesiyle bir BankAccount nesnesini karşılaştırırsan, beklenmedik sonuçlar elde edebilirsin.

Örneğin, iki sınıfı düşün:


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)

acct == pn çalıştırıldığında True döner; oysa bir telefon numarasıyla bir banka hesap numarasını karşılaştırmaktadır.

Karşılaştırmanın mantıklı olduğundan emin olmak için __eq__() yöntemine geçirilen nesnelerin sınıfını kontrol etmek iyi bir pratiktir.

Bu egzersiz

Python'da Nesne Yönelimli Programlamaya Giriş

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • BankAccount tanımını, yalnızca number özniteliği aynıysa ve kendisine geçirilen her iki nesnenin type() değeri aynıysa True döndürecek şekilde değiştir.
  • acct ve pn eşit mi kontrol et.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

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(____)
Kodu Düzenle ve Çalıştır