Hướng dẫn operator overriding in python - ghi đè toán tử trong python
Nạp chồng (hàm) toán tử (Operator Overloading) có nghĩa là đưa ra những ý nghĩa đã được mở rộng hơn, vượt ra ngoài ý nghĩa được xác định ban đầu về mặt vận hành của một (hàm) toán tử. Ví dụ, toán tử + được sử dụng để cộng hai số nguyên, để nối hai chuỗi lại với nhau, và hợp nhất hai danh sách. Sở dĩ có thể đạt được điều này là do toán tử ‘+’ đã được nạp chồng bởi class int và class str. Bạn có thể đã nhận ra rằng, mặc dù cùng là một toán tử hoặc một hàm đã được tích hợp sẵn, nhưng chúng sẽ có những chức năng khác nhau dành cho các đối tượng thuộc các kiểu class khác nhau, điều này được gọi là nạp chồng toán tử (Operator Overloading). # Đoạn chương trình Python mô tả cách sử dụng
Kết quả in ra là:
Giả sử chúng ta có hai đối tượng thuộc một kiểu class do người dùng tự định nghĩa và chúng ta phải động hai đối tượng này bằng toán tử ‘+’, nếu chúng ta cứ thế mà làm thì chắc chắn trình biên dịch sẽ đưa ra một thông báo lỗi, bởi vì trình biên dịch không biết được cách để cộng hai đối tượng này. Vì vậy, chúng ta sẽ phải tự định nghĩa một phương thức (method) dành cho một toán tử cụ thể, để có thể thu được toán tử hoạt động theo ý mình, quá trình này được gọi là nạp chồng toán tử. Chúng ta có thể nạp chồng tất cả các toán tử hiện có, nhưng không thể tạo ra toán tử mới. Để thực hiện nạp chồng toán tử, Python cung cấp một số hàm đặc biệt hoặc hàm ma thuật (magic function), có khả năng tự động được gọi khi nó được liên kết (associated) với một toán tử cụ thể nào đó. Trong ví dụ dưới đây, khi chúng ta sử dụng toán tử + để cộng hai đối tượng kiểu chuỗi (không phải kiểu int), phương thức ma thuật (magic method) __add__ sẽ tự động được gọi: Ví dụ 1: # Đoạn chương trình Python Program minh họacách để nạp chồng một hàm toán tử + hai ngôi
Kết quả in ra là::
Giả sử chúng ta có hai đối tượng thuộc một kiểu class do người dùng tự định nghĩa và chúng ta phải động hai đối tượng này bằng toán tử ‘+’, nếu chúng ta cứ thế mà làm thì chắc chắn trình biên dịch sẽ đưa ra một thông báo lỗi, bởi vì trình biên dịch không biết được cách để cộng hai đối tượng này. Vì vậy, chúng ta sẽ phải tự định nghĩa một phương thức (method) dành cho một toán tử cụ thể, để có thể thu được toán tử hoạt động theo ý mình, quá trình này được gọi là nạp chồng toán tử. Chúng ta có thể nạp chồng tất cả các toán tử hiện có, nhưng không thể tạo ra toán tử mới. Để thực hiện nạp chồng toán tử, Python cung cấp một số hàm đặc biệt hoặc hàm ma thuật (magic function), có khả năng tự động được gọi khi nó được liên kết (associated) với một toán tử cụ thể nào đó. Trong ví dụ dưới đây, khi chúng ta sử dụng toán tử + để cộng hai đối tượng kiểu chuỗi (không phải kiểu int), phương thức ma thuật (magic method) __add__ sẽ tự động được gọi: Ví dụ 1::
Kết quả in ra là::
Giả sử chúng ta có hai đối tượng thuộc một kiểu class do người dùng tự định nghĩa và chúng ta phải động hai đối tượng này bằng toán tử ‘+’, nếu chúng ta cứ thế mà làm thì chắc chắn trình biên dịch sẽ đưa ra một thông báo lỗi, bởi vì trình biên dịch không biết được cách để cộng hai đối tượng này. Vì vậy, chúng ta sẽ phải tự định nghĩa một phương thức (method) dành cho một toán tử cụ thể, để có thể thu được toán tử hoạt động theo ý mình, quá trình này được gọi là nạp chồng toán tử. Chúng ta có thể nạp chồng tất cả các toán tử hiện có, nhưng không thể tạo ra toán tử mới. Để thực hiện nạp chồng toán tử, Python cung cấp một số hàm đặc biệt hoặc hàm ma thuật (magic function), có khả năng tự động được gọi khi nó được liên kết (associated) với một toán tử cụ thể nào đó. Trong ví dụ dưới đây, khi chúng ta sử dụng toán tử + để cộng hai đối tượng kiểu chuỗi (không phải kiểu int), phương thức ma thuật (magic method) __add__ sẽ tự động được gọi:: Nạp chồng các toán tử so sánh trong Python
Kết quả in ra là::
Giả sử chúng ta có hai đối tượng thuộc một kiểu class do người dùng tự định nghĩa và chúng ta phải động hai đối tượng này bằng toán tử ‘+’, nếu chúng ta cứ thế mà làm thì chắc chắn trình biên dịch sẽ đưa ra một thông báo lỗi, bởi vì trình biên dịch không biết được cách để cộng hai đối tượng này. Vì vậy, chúng ta sẽ phải tự định nghĩa một phương thức (method) dành cho một toán tử cụ thể, để có thể thu được toán tử hoạt động theo ý mình, quá trình này được gọi là nạp chồng toán tử. Chúng ta có thể nạp chồng tất cả các toán tử hiện có, nhưng không thể tạo ra toán tử mới. Để thực hiện nạp chồng toán tử, Python cung cấp một số hàm đặc biệt hoặc hàm ma thuật (magic function), có khả năng tự động được gọi khi nó được liên kết (associated) với một toán tử cụ thể nào đó. Trong ví dụ dưới đây, khi chúng ta sử dụng toán tử + để cộng hai đối tượng kiểu chuỗi (không phải kiểu int), phương thức ma thuật (magic method) __add__ sẽ tự động được gọi:: Nạp chồng toán tử bằng và toán tử nhỏ hơn:
Kết quả in ra là::
Giả sử chúng ta có hai đối tượng thuộc một kiểu class do người dùng tự định nghĩa và chúng ta phải động hai đối tượng này bằng toán tử ‘+’, nếu chúng ta cứ thế mà làm thì chắc chắn trình biên dịch sẽ đưa ra một thông báo lỗi, bởi vì trình biên dịch không biết được cách để cộng hai đối tượng này. Vì vậy, chúng ta sẽ phải tự định nghĩa một phương thức (method) dành cho một toán tử cụ thể, để có thể thu được toán tử hoạt động theo ý mình, quá trình này được gọi là nạp chồng toán tử. Chúng ta có thể nạp chồng tất cả các toán tử hiện có, nhưng không thể tạo ra toán tử mới. Để thực hiện nạp chồng toán tử, Python cung cấp một số hàm đặc biệt hoặc hàm ma thuật (magic function), có khả năng tự động được gọi khi nó được liên kết (associated) với một toán tử cụ thể nào đó. Trong ví dụ dưới đây, khi chúng ta sử dụng toán tử + để cộng hai đối tượng kiểu chuỗi (không phải kiểu int), phương thức ma thuật (magic method) __add__ sẽ tự động được gọi:Danh sách các phương thức ma thuật hoặc hàm đặc biệt dành cho nạp chồng toán tử trong Python:Ví dụ 1:
__truediv__(self, other)
__mul__(self, other)
__truediv__(self, other)
Phương thức ma thuật (magic method)
// __floordiv__(self, other) |