1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. Nhập môn Lập trình Hướng đối tượng với Python

Connected

Bài tập

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.

Hướng dẫn

100 XP
  • Sửa định nghĩa BankAccount để chỉ trả về True nếu thuộc tính number giống nhau và type() của cả hai đối tượng truyền vào là giống nhau.
  • Kiểm tra xem acct và pn có bằng nhau không.