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

Số học số hữu tỷ và chồng toán tử

Chúng ta bây giờ đã thêm các phương thức để thực hiện hoạt động số học với các số hữu tỷ. Nhớ lại rằng phiên làm việc
trước đã sử dụng các toán tử tích hợp cho số học. Cho một dạng tích hợp như int hay float, mỗi toán tử số học tương đương
với một tên phương thức đặc biệt. Bạn sẽ thấy nhiều trong số phương thức này bằng cách nhập dir(int) hay dir(str)
tại một shell prompt, và chúng được liệt kê trong bảng dưới. Object trên nó phương thức được gọi tương ứng với
toán hạng bên trái, trong khi tham số thứ hai của phương thức tương ứng với toán hạng bên phải. Vì vậy, ví dụ, code
x+y thực sự là shorthand cho code x.__add__(y).
bang 1
Để chồng một toán tử số học, bạn chính định nghĩa một phương thức mới sử dụng tên phương thức phù hợp. Code cho
mỗi phương thức áp dụng một quy tắc của số học số hữu tỷ. Các quy tắc được liệt kê trong bảng dưới.
bang 2
Mỗi phương thức xây dựng và trả về một số hữu tỷ mới cái trình bày kết quả của hoạt động. Sau đây là code cho
hoạt động cộng:

def __add__(self, other):

“””Returns the sum of the numbers.
self is the left operand and other is
the right operand.”””
newNumer = self.numer * other.denom + \

other.numer * self.denom

newDenom = self.denom * other.denom
return Rational(newNumer, newDenom)

Chú ý rằng tham số self được xem như toán hạng bên trái của toán tử, trong khi tham số other được xem như toán hạng
bên phải. Các biến thực thể của số hữu tỷ tên other được truy cập trong cùng phong cách như các biến thực thể
tên self. Cũng chú ý rằng phương thức này, giống như các phương thức khác cho số học hữu tỷ, trả về một số hữu tỷ.
Các hoạt động số học trên các số được nói là closed under combination, có nghĩa rằng các hoạt động này thường trả
về các giá trị của cùng các dạng như các đối số của chúng, cho phép người dùng kết hợp các hoạt động trong các biểu
thức phức tạp tùy biến.
Ví dụ khác về một cơ chế trừu tượng là chồng toán tử. Trong trường hợp này, lập trình viên có thể sử dụng các toán
tử với các ý nghĩa tiêu chuẩn đơn mặc dù các hoạt động ngầm khác nhau từ dạng dữ liệu đến dạng dữ liệu.

Chia sẻ