檢查類別是否相同
在上一個練習中,你定義了一個具備 number 屬性的 BankAccount 類別,並用它來做比較。不過,如果你把 BankAccount 物件拿去和另一個也有 number 屬性的不同類別物件比較,可能會得到出乎意料的結果。
例如,考慮以下兩個類別:
|
|
執行 acct == pn 會回傳 True,即使這其實是在比較電話號碼和銀行帳號。
良好的作法是:在 __eq__() 方法中檢查傳入物件的類別,以確保比較是合理的。
本練習屬於課程
Python 物件導向程式設計入門
練習說明
- 修改
BankAccount的定義,只有在number屬性相同,且兩個傳入物件的type()相同時才回傳True。 - 檢查
acct和pn是否相等。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
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 class type
def __eq__(self, other):
return (self.number == other.number) ____
acct = BankAccount(873555333)
pn = Phone(873555333)
# Check if the two objects are equal
print(____)