Các ví dụ mô hình hóa dữ liệu Python (phần 3)

Các phương thức so sánh

Bạn có thể so sánh các số nguyên và các số dấu phẩy động sử dụng các toán tử ==, !=, <, >, <=, và >=. Khi trình dịch
Python chạm trán một trong những toán tử này, nó sử dụng một phương thức tương ứng định nghĩa trong class float
hay int. Mỗi trong số những phương thức này mong đợi 2 đối số. Đối số đầu tiên, self, trình bày toán hạng bên trái
toán tử, và đôi số thứ hai trình bày toán hạng khác. Bảng dưới liệt kê các toán tử so sánh và các phương thức tương
ứng.
table
Để sử dụng các toán tử so sánh với một class mới các objects, như các số hữu tỷ, class phải bao gồm các phương thức
này với logic so sánh phù hợp. Tuy nhiên, một khi cái thực hiện của class đã định nghĩa các phương thức cho
==, <, và >=, các phương thức còn lại tự động được cung cấp.
Hãy thực thi < ở đây và chờ trên == cho đến phần tiếp theo. Cách thức đơn giản nhất để so sánh 2 số hữu tỷ là
so sánh sản phẩm của các cực trị và sản phẩm của các trung bình. Các cực trị là tử số đầu tiên và mẫu số thứ hai trong
khi các trung bình là tử số thứ hai và mẫu số thứ nhất. Vì vậy, so sánh 1/6 < 2/3 dịch thành 1 * 3 < 2 * 6.
Thực thi phương thức __lt__ cho các số hữu tỷ sử dụng chiến lược này, như sau:

def __lt__(self, other):

“””Compares two rational numbers, self and other,
using <.”””
extremes = self.numer * other.denom
means = other.numer * self.denom
return extremes < means

Khi các objects của một class mới là so sánh được. Nó là một ý tưởng tốt để bao gồm các phương thức so sánh trong
class đó. Sau đó, các phương thức tích hợp khác, như phương thức sort cho các lists, sẽ là có thể sử dụng các
objects của bạn phù hợp.

Chia sẻ