检查类是否相等
在上一个练习中,您定义了一个带有 number 属性的 BankAccount 类,并用它来比较对象。但如果您把一个 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)