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ırEgzersiz talimatları
__init__()metodunu,numberadlı yeni bir argüman kabul edecek ve yeni birnumberö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)