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ımlamıştı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 alabilirsin.

Ö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ırıyoruz.

Karşılaştırmanın mantıklı olduğundan emin olmak için, __eq__() metoduna aktarılan nesnelerin sınıfını kontrol etmek iyi bir pratiktir.

Bu egzersiz

Python'da Nesne Yönelimli Programlama

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

Egzersiz talimatları

_ Hem Phone hem de BankAccount sınıfları tanımlandı. "Run code" düğmesini kullanarak kodu olduğu gibi çalıştırmayı dene ve çıktıyı incele._

  • 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.

Kodu çalıştır ve çıktıyı yine incele.

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 type()
    def __eq__(self, other):
        return (self.number == other.number)

acct = BankAccount(873555333)
pn = Phone(873555333)
print(acct == pn)
Kodu Düzenle ve Çalıştır