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

Eşitliği aşırı yükleme

Özel bir sınıfın iki nesnesini == ile karşılaştırdığında, Python varsayılan olarak nesne başvurularını karşılaştırır; nesnelerin içindeki verileri değil. Bu davranışı geçersiz kılmak için sınıf, iki argüman — karşılaştırılacak nesneler — alan ve True veya False döndüren özel __eq__() metodunu uygulayabilir. Bu metod, iki nesne karşılaştırıldığında örtük olarak çağrılır.

Önceki bölümden BankAccount sınıfı betik bölmesinde senin için hazır. Bir niteliği (balance) ve bir withdraw() metodu var. Aynı bakiyeye sahip iki banka hesabı mutlaka aynı hesap değildir, ancak banka hesaplarının genellikle bir hesap numarası vardır ve hesap numarası aynı olan iki hesap aynı kabul edilmelidir.

Bu egzersiz

Python'da Nesne Yönelimli Programlama

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

Egzersiz talimatları

Satır 1-7 arasındaki kodu seçip "Kodu Çalıştır" düğmesine basmayı dene. Sonra konsolda birkaç BankAccount nesnesi oluşturup karşılaştırmayı dene.

  • __init__() metodunu yeni bir parametre — number — kabul edecek şekilde değiştir ve yeni bir number niteliğini başlat.
  • İki nesnenin number niteliği eşitse True döndüren bir __eq__() metodu tanımla.
  • Yazdırma ifadelerini ve konsoldaki çıktıyı incele.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

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