Thật dễ dàng để so sánh các đối tượng có sẵn trong Python, như 1 < 2, 'abc' < 'abd', tuple (0, 1, 3) < tuple (0, 2, 1). Nhưng làm thế nào để so sánh các đối tượng của riêng bạn? . (Tôi đang sử dụng Python 3. 6. 5) class Point: Python sẽ phàn nàn về TypeError: '<' not supported between instances of 'Point' and 'Point' 8 vì nó không biết cách so sánhTypeError: '<' not supported between instances of 'Point' and 'Point' Dưới đây là 3 giải pháp để so sánh và sắp xếp các đối tượng này Giải pháp 1. Sử dụng tham số khóa sort()Giả sử chúng ta muốn so sánh các điểm theo khoảng cách của chúng với TypeError: '<' not supported between instances of 'Point' and 'Point' 9class Point: Kết quả in ra là một danh sách đã sắp xếp [Point(x=0, y=1), Point(x=1, y=0), Point(x=2, y=0), Point(x=3, y=0)] Cả class Point:0 (tại chỗ) và TypeError: '<' not supported between instances of 'Point' and 'Point' 0 (tạo danh sách mới) đều hỗ trợ chức năng lambda. Tham số TypeError: '<' not supported between instances of 'Point' and 'Point' 1 cũng rất hữu íchGiải pháp 2. Ghi đè phương pháp dunderChúng ta có thể xác định cách so sánh với một đối tượng khác bằng cách ghi đè thao tác TypeError: '<' not supported between instances of 'Point' and 'Point' 2 và một trong các thao tác TypeError: '<' not supported between instances of 'Point' and 'Point' 3, TypeError: '<' not supported between instances of 'Point' and 'Point' 4, TypeError: '<' not supported between instances of 'Point' and 'Point' 5, TypeError: '<' not supported between instances of 'Point' and 'Point' 6. Dunder là viết tắt của dấu gạch dưới képTypeError: '<' not supported between instances of 'Point' and 'Point' 1Chúng ta có thể nhận được cùng một danh sách được sắp xếp Giải pháp 3. Chuyển đổi thành các đối tượng tích hợpSử dụng bộ dữ liệu TypeError: '<' not supported between instances of 'Point' and 'Point' 7 và Python biết cách so sánh bộ dữ liệu và số nguyên (khoảng cách_square). TypeError: '<' not supported between instances of 'Point' and 'Point' 8 là cần thiết để giữ vị trí tương đối của hai điểm có cùng khoảng cách, i. e. làm cho việc phân loại ổn địnhTypeError: '<' not supported between instances of 'Point' and 'Point' 4Kết quả là một danh sách các bộ dữ liệu được sắp xếp và có thể bạn cần một dòng khác để trích xuất các điểm đó TypeError: '<' not supported between instances of 'Point' and 'Point' 5Kết luậnMã của Giải pháp 1 là mã ít nhất và ít mã hơn có nghĩa là ít lỗi hơn. Giải pháp 2 là giải pháp linh hoạt nhất vì quy tắc so sánh nằm trong lớp. Với Giải pháp 2, chúng tôi có thể kiểm tra TypeError: '<' not supported between instances of 'Point' and 'Point' 9. Giải pháp 3 chiếm thêm dung lượng, nhưng nó rất hữu ích vì một mục thông thường là một bộ class Point:0 Làm cách nào để so sánh hai phương thức trong Python?Tóm tắt. - Để so sánh hai đối tượng, chúng ta cần thực hiện các toán tử __comparison__ tích hợp sẵn . - Nếu chúng ta triển khai các phương thức < và
Phương pháp __ EQ __ là gì?Python có toán tử “==”, toán tử “is” và “__eq__” phương thức dunder để so sánh hai đối tượng của một lớp hoặc để tùy chỉnh phép so sánh.
6 toán tử so sánh trong Python là gì?Kết thúc ngày hôm nay, chúng ta đã học được sáu toán tử so sánh trong python. Đây là- python nhỏ hơn, python lớn hơn, Nhỏ hơn hoặc Bằng, Bằng hoặc lớn hơn, Python Bằng và Toán tử không bằng Python .
Python có so sánh các loại trong == không?Toán tử == so sánh giá trị hoặc đẳng thức của hai đối tượng , trong khi toán tử is của Python kiểm tra xem hai biến có trỏ đến cùng một đối tượng trong bộ nhớ hay không. Trong phần lớn các trường hợp, điều này có nghĩa là bạn nên sử dụng các toán tử đẳng thức == và. = |