Bắt đầu ngayBắt đầu miễn phí

Nạp chồng phép so sánh bằng

Khi so sánh hai đối tượng của một lớp tùy biến bằng ==, mặc định Python chỉ so sánh các vùng nhớ mà đối tượng trỏ tới, không phải dữ liệu bên trong đối tượng. Để ghi đè hành vi này, lớp có thể triển khai một phương thức đặc biệt, nhận hai đối số là các đối tượng cần so sánh và trả về True hoặc False. Phương thức này sẽ được gọi ngầm khi hai đối tượng được so sánh.

Lớp BankAccount từ chương trước đã có sẵn trong script.py. Lớp có hai thuộc tính balancenumber, cùng phương thức withdraw(). Hai tài khoản ngân hàng có cùng số dư chưa chắc là cùng một tài khoản, nhưng một tài khoản ngân hàng thường có số tài khoản, và hai tài khoản có cùng số tài khoản nên được xem là như nhau.

Bài tập này là một phần của khóa học

Nhập môn Lập trình Hướng đối tượng với Python

Xem khóa học

Hướng dẫn bài tập

  • Sửa phương thức __init__() để nhận thêm đối số mới tên number và khởi tạo thuộc tính number mới.
  • Định nghĩa một phương thức để so sánh xem thuộc tính number của hai đối tượng có bằng nhau không.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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)
    
Chỉnh sửa và Chạy Mã