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

Kiểm tra hai đối tượng cùng lớp

Trong bài trước, bạn đã định nghĩa lớp BankAccount với thuộc tính number dùng để so sánh. Nhưng nếu bạn so sánh một đối tượng BankAccount với một đối tượng thuộc lớp khác cũng có thuộc tính number, bạn có thể nhận về kết quả ngoài ý muốn.

Ví dụ, hãy xem hai lớp sau


class Phone:
    def __init__(self, number):
        self.number = number

    def __eq__(self, other):
        return self.number == \
               other.number

pn = Phone(873555333)

class BankAccount:
    def __init__(self, number):
        self.number = number

    def __eq__(self, other):
        return self.number == \
               other.number

acct = BankAccount(873555333)

Chạy acct == pn sẽ trả về True, dù thực chất đang so sánh một số điện thoại với một số tài khoản ngân hàng.

Thực hành tốt là kiểm tra lớp của các đối tượng được truyền vào phương thức __eq__() để đảm bảo phép so sánh có ý nghĩa.

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 định nghĩa BankAccount để chỉ trả về True nếu thuộc tính number giống nhau type() của cả hai đối tượng truyền vào là giống nhau.
  • Kiểm tra xem acctpn 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:
  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(____)
Chỉnh sửa và Chạy Mã