檢查類別是否相同
在前一題中,你定義了一個 BankAccount 類別,並用 number 屬性來進行比較。不過,如果你把一個 BankAccount 物件拿去和另一個類別、但同樣具有 number 屬性的物件比較,結果可能會出乎意料。
例如,考慮以下兩個類別:
|
|
執行 acct == pn 會回傳 True,即使我們比較的是電話號碼與銀行帳號。
良好的做法是:在 __eq__() 方法中檢查傳入物件的類別,確保這個比較是合理的。
本練習屬於課程
Python 物件導向程式設計
練習說明
Phone 和 BankAccount 類別都已定義好。先按下「Run code」按鈕直接執行目前的程式碼,並觀察輸出結果。
- 修改
BankAccount的定義,讓它只在number屬性相同,且兩個傳入物件的type()也相同時才回傳True。
再次執行程式碼並檢視輸出結果。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
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)