Tôi nhận thấy tôi có thể sử dụng toán tử ==
để so sánh tất cả các kiểu dữ liệu gốc (số nguyên, chuỗi, booleans, số dấu chấm động vv) và danh sách, bộ, bộ và từ điển có chứa kiểu dữ liệu gốc. Trong những trường hợp này, toán tử ==
kiểm tra xem hai đối tượng có bằng nhau hay không. Nhưng trong một số trường hợp khác (cố gắng để so sánh trường hợp lớp học mà tôi tạo ra) các nhà điều hành ==
chỉ kiểm tra nếu hai biến tham chiếu đến cùng một đối tượng (như vậy trong những trường hợp này các nhà điều hành ==
là tương đương với các nhà điều hành is
)Khi nào toán tử `==` không tương đương với toán tử `is`? (Python)
Câu hỏi của tôi là: Khi nào nhà điều hành ==
làm nhiều việc hơn là chỉ so sánh danh tính?
EDIT: Tôi đang sử dụng Python 3
Về cơ bản, '==' là khác nhau từ 'is', bất cứ khi nào một lớp đè 'phương pháp __eq__' nó được thừa hưởng từ' object', vì vậy không có câu trả lời dễ câu hỏi này. Tùy thuộc vào phiên bản Python bạn đang sử dụng, mọi thứ trở nên phức tạp hơn do sự tồn tại của '__cmp__'. Bên cạnh sự tò mò, có lý do thực tế nào cho câu hỏi không? – Dirk
@Dirk, cảm ơn. Tôi yêu cầu nó chủ yếu là do tò mò, nhưng tôi cũng nghĩ rằng nó là tốt để biết khi nào chính xác tôi có thể sử dụng toán tử == để kiểm tra bình đẳng đối tượng. – snakile