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, kursun bir parçasıdır
Python'da Nesne Yönelimli Programlamaya Giriş
Egzersiz 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ı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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)