Khi so sánh hai đối tượng của một lớp tùy chỉnh bằng cách sử dụng <script.py> output: True False2, Python theo mặc định chỉ so sánh các tham chiếu đối tượng, không so sánh dữ liệu có trong các đối tượng. Để ghi đè hành vi này, lớp có thể triển khai phương thức <script.py> output: True False3 đặc biệt, phương thức này chấp nhận hai đối số — đối tượng được so sánh — và trả về <script.py> output: True False0 hoặc <script.py> output: True False1. Phương thức này sẽ được gọi ngầm khi hai đối tượng được so sánh Show Lớp <script.py> output: True False2 từ chương trước có sẵn cho bạn trong ngăn tập lệnh. Nó có một thuộc tính, <script.py> output: True False3, và một phương thức <script.py> output: True False4. Hai tài khoản ngân hàng có cùng số dư không nhất thiết phải 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 coi là giống nhau Hãy thử chọn mã trong dòng 1-7 và nhấn nút “Chạy mã”. Sau đó, thử tạo một vài <script.py> output: True False2 đối tượng trong bảng điều khiển và so sánh chúng
<script.py> output: True False4 <script.py> output: True False Lưu ý rằng phương pháp của bạn chỉ so sánh số tài khoản chứ không so sánh số dư. Điều gì sẽ xảy ra nếu hai tài khoản có cùng số tài khoản nhưng khác số dư? . Ở cuối chương này, bạn sẽ học cách định nghĩa các lớp ngoại lệ của riêng mình để tạo các loại lỗi tùy chỉnh này Kiểm tra bình đẳng lớpTrong bài tập trước, bạn đã xác định một lớp <script.py> output: True False2 với thuộc tính <script.py> output: True False7 được dùng để so sánh. Nhưng nếu bạn so sánh một đối tượng <script.py> output: True False2 với một đối tượng của lớp khác cũng có thuộc tính <script.py> output: True False7, thì bạn có thể nhận được kết quả không mong muốn Ví dụ, xét hai lớp <script.py> output: True False00 <script.py> output: True False01 Đang chạy <script.py> output: True False02 sẽ trả về <script.py> output: True False0, mặc dù chúng tôi đang so sánh số điện thoại với số tài khoản ngân hàng. Bạn nên kiểm tra lớp đối tượng được truyền cho phương thức <script.py> output: True False3 để đảm bảo phép so sánh có ý nghĩa Cả hai lớp <script.py> output: True False05 và <script.py> output: True False2 đã được xác định. Hãy thử chạy mã nguyên trạng bằng cách sử dụng nút “Chạy mã” và kiểm tra đầu ra
Chạy mã và kiểm tra lại đầu ra <script.py> output: True False1Toán tửPhương thức <script.py> output: True False2 <script.py> output: True False3 <script.py> output: True False93 <script.py> output: True False94______295 <script.py> output: True False96 <script.py> output: True False97 <script.py> output: True False98 <script.py> output: True False99 <script.py> output: True False80 <script.py> output: True False81 <script.py> output: True False82
<script.py> output: True False0 <script.py> output: True False9 Bây giờ chỉ so sánh các đối tượng của cùng một lớp <script.py> output: True False2 có thể trả về <script.py> output: True False0. Một cách khác để đảm bảo rằng một đối tượng có cùng loại như bạn mong đợi là sử dụng hàm <script.py> output: True False85 . Điều này có thể hữu ích khi xử lý tính kế thừa, vì Python coi một đối tượng là một thể hiện của cả lớp cha và lớp con Hãy thử chạy <script.py> output: True False86 trong bảng điều khiển (với thứ tự đẳng thức bị đảo ngược) Điều này cho bạn biết điều gì về phương pháp <script.py> output: True False3 ?So sánh và kế thừa Điều gì xảy ra khi một đối tượng được so sánh với một đối tượng của lớp con? <script.py> output: True False8 Lớp <script.py> output: True False88 kế thừa từ lớp <script.py> output: True False89 và cả hai đều triển khai phương thức <script.py> output: True False3 bao gồm bản in chẩn đoán Phương thức <script.py> output: True False3 nào sẽ được gọi khi đoạn mã sau được chạy? <script.py> output: True False0 Khi chạy trong bảng điều khiển, kết quả là <script.py> output: True False1 Điều này cho thấy rằng khi hai lớp, một lớp là lớp cha chứa phương thức __eq__() và trường hợp con cũng vậy. Và khi cả hai biến thành một đối tượng và các đối tượng được so sánh, thì Python luôn gọi phương thức <script.py> output: True False3 của con khi so sánh một đối tượng con với một đối tượng cha Bạn có thể so sánh các đối tượng bằng == không?So sánh các đối tượng ¶
. Hai thể hiện đối tượng là bằng nhau nếu chúng có cùng thuộc tính và giá trị (giá trị được so sánh với == ) và là thể hiện của cùng một lớp .
== và === trong Python là gì?Toán tử == kiểm tra xem hai toán hạng có bằng giá trị không. Toán tử === kiểm tra xem hai toán hạng có bằng nhau về kiểu dữ liệu và giá trị hay không .
== Là một toán tử so sánh trong Python?Toán tử “==” so sánh bằng cách kiểm tra sự bằng nhau . nếu chúng ta so sánh hai đối tượng người ở trên bằng cách sử dụng toán tử ==, chúng ta sẽ nhận được câu trả lời là “cả hai người đều bình đẳng”, vì chúng mang cùng một giá trị tên. Tuy nhiên, toán tử “is” so sánh các danh tính.
== hoạt động như thế nào trong Python?Nói một cách đơn giản. == xác định xem giá trị của hai đối tượng có bằng nhau hay không , trong khi is xác định xem chúng có phải là cùng một đối tượng hay không. *id() là một hàm có sẵn trong Python. Nó chấp nhận một tham số duy nhất và được sử dụng để trả về danh tính của một đối tượng. |