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
|
|
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
Hướng dẫn bài tập
- Sửa định nghĩa
BankAccountđể chỉ trả vềTruenếu thuộc tínhnumbergiống nhau vàtype()của cả hai đối tượng truyền vào là giống nhau. - Kiểm tra xem
acctvàpncó 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(____)