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:
|
|
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ırEgzersiz 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._
BankAccounttanımını, yalnızcanumberözniteliği aynıysa ve kendisine geçirilen her iki nesnenintype()değeri aynıysaTruedö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)