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 nesnelerin işaret ettiği bellek bölgelerini karşılaştırır; nesnelerin içindeki verileri değil. Bu davranışı geçersiz kılmak için, sınıf, karşılaştırılacak iki nesneyi argüman olarak alan ve True ya da False döndüren özel bir metot uygulayabilir. İki nesne karşılaştırıldığında bu metot örtük olarak çağrılır.

Önceki bölümden BankAccount sınıfı script.py içinde hazır. İki özniteliği (balance ve number) ve bir de withdraw() metodu var. Aynı bakiyeye sahip iki banka hesabı mutlaka aynı hesap değildir; ancak bir banka hesabının genellikle bir hesap numarası vardır ve aynı hesap numarasına sahip iki hesap aynı kabul edilmelidir.

Bu egzersiz

Python'da Nesne Yönelimli Programlamaya Giriş

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

Egzersiz talimatları

  • __init__() metodunu, number adlı yeni bir argüman kabul edecek ve yeni bir number özniteliğini başlatacak şekilde değiştir.
  • İki nesnenin number özniteliklerinin eşit olup olmadığını karşılaştıran bir metot tanımla.

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