开始使用免费开始使用

重载相等运算

当使用 == 比较自定义类的两个对象时,Python 默认比较的是对象指向的内存块,而不是对象中包含的数据。若要覆盖这一行为,可以在类中实现一个特殊方法,该方法接受两个参数(要比较的对象),并返回 TrueFalse。当两个对象进行比较时,这个方法会被隐式调用。

上一章中的 BankAccount 类已在 script.py 中为您提供。它有两个属性:balancenumber,以及一个 withdraw() 方法。两个拥有相同余额的账户不一定是同一个账户,但银行账户通常都有一个"账号"。两个账号相同的账户应被视为同一账户。

本练习是课程的一部分

Python 面向对象编程入门

查看课程

练习说明

  • 修改 __init__() 方法,使其接受一个名为 number 的新参数,并初始化新的 number 属性。
  • 定义一个方法,用于比较两个对象的 number 属性是否相等。

交互式实操练习

通过完成这段示例代码来试试这个练习。

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)
    
编辑并运行代码