Hướng dẫn operator overloading in python definition - quá tải toán tử trong định nghĩa python
Quá tải toán tử PythonCác nhà khai thác Python làm việc cho các lớp học tích hợp. Nhưng cùng một toán tử hành xử khác nhau với các loại khác nhau. Ví dụ, toán tử Traceback (most recent call last): File "2 sẽ thực hiện bổ sung số học trên hai số, hợp nhất hai danh sách hoặc nối hai chuỗi. Show
Tính năng này trong Python cho phép cùng một toán tử có ý nghĩa khác nhau theo ngữ cảnh được gọi là quá tải toán tử. Vậy điều gì xảy ra khi chúng ta sử dụng chúng với các đối tượng của lớp do người dùng xác định? Chúng ta hãy xem xét lớp sau, cố gắng mô phỏng một điểm trong hệ tọa độ 2 chiều.
Đầu ra Traceback (most recent call last): File " Ở đây, chúng ta có thể thấy rằng một Traceback (most recent call last): File "3 đã được nâng lên, vì Python không biết làm thế nào để thêm hai đối tượng Traceback (most recent call last): File "4 lại với nhau. Tuy nhiên, chúng ta có thể đạt được nhiệm vụ này trong Python thông qua quá tải người vận hành. Nhưng trước tiên, chúng ta hãy nhận được một khái niệm về các chức năng đặc biệt. Chức năng đặc biệt của PythonCác chức năng của lớp bắt đầu với Double UnderCore Traceback (most recent call last): File "5 được gọi là các chức năng đặc biệt trong Python. Các chức năng này không phải là các chức năng điển hình mà chúng tôi xác định cho một lớp. Hàm Traceback (most recent call last): File "6 mà chúng tôi xác định ở trên là một trong số đó. Nó được gọi là mỗi khi chúng ta tạo một đối tượng mới của lớp đó. Có rất nhiều chức năng đặc biệt khác trong Python. Ghé thăm các chức năng đặc biệt của Python để tìm hiểu thêm về chúng. Sử dụng các chức năng đặc biệt, chúng tôi có thể làm cho lớp của chúng tôi tương thích với các chức năng tích hợp.
Giả sử chúng ta muốn hàm Traceback (most recent call last): File "7 in tọa độ của đối tượng Traceback (most recent call last): File "4 thay vì những gì chúng ta có. Chúng ta có thể xác định một phương thức Traceback (most recent call last): File "9 trong lớp của chúng ta kiểm soát cách đối tượng được in. Hãy xem làm thế nào chúng ta có thể đạt được điều này:
Bây giờ chúng ta hãy thử lại chức năng Traceback (most recent call last): File "7.
Đầu ra (2, 3) Ở đây, chúng ta có thể thấy rằng một Traceback (most recent call last): File "3 đã được nâng lên, vì Python không biết làm thế nào để thêm hai đối tượng Traceback (most recent call last): File "4 lại với nhau.
Tuy nhiên, chúng ta có thể đạt được nhiệm vụ này trong Python thông qua quá tải người vận hành. Nhưng trước tiên, chúng ta hãy nhận được một khái niệm về các chức năng đặc biệt. Chức năng đặc biệt của Python Các chức năng của lớp bắt đầu với Double UnderCore Traceback (most recent call last):
File " |
Chức năng đặc biệt của Python | Các chức năng của lớp bắt đầu với Double UnderCore Traceback (most recent call last): File "5 được gọi là các chức năng đặc biệt trong Python. | Các chức năng này không phải là các chức năng điển hình mà chúng tôi xác định cho một lớp. Hàm Traceback (most recent call last): File "6 mà chúng tôi xác định ở trên là một trong số đó. Nó được gọi là mỗi khi chúng ta tạo một đối tượng mới của lớp đó. |
---|---|---|
Có rất nhiều chức năng đặc biệt khác trong Python. Ghé thăm các chức năng đặc biệt của Python để tìm hiểu thêm về chúng. | Sử dụng các chức năng đặc biệt, chúng tôi có thể làm cho lớp của chúng tôi tương thích với các chức năng tích hợp. | Giả sử chúng ta muốn hàm Traceback (most recent call last): File "7 in tọa độ của đối tượng Traceback (most recent call last): File "4 thay vì những gì chúng ta có. Chúng ta có thể xác định một phương thức Traceback (most recent call last): File "9 trong lớp của chúng ta kiểm soát cách đối tượng được in. Hãy xem làm thế nào chúng ta có thể đạt được điều này: |
| Bây giờ chúng ta hãy thử lại chức năng Traceback (most recent call last): File "7. | Cái đó tốt hơn. Hóa ra, phương pháp tương tự này được gọi khi chúng ta sử dụng hàm tích hợp 1 hoặc 2. |
Vì vậy, khi bạn sử dụng 3 hoặc 4, Python gọi nội bộ là phương thức 5. Do đó tên, các chức năng đặc biệt. | Bây giờ chúng ta hãy quay lại quá tải nhà điều hành. | Quá tải người vận hành + |
Để quá tải toán tử Traceback (most recent call last): File "2, chúng tôi sẽ cần thực hiện chức năng 7 trong lớp. Với sức mạnh lớn đến trách nhiệm lớn. Chúng ta có thể làm bất cứ điều gì chúng ta thích, bên trong chức năng này. Nhưng việc trả về một đối tượng Traceback (most recent call last): File "4 của tổng tọa độ là hợp lý hơn. | Bây giờ chúng ta hãy thử lại thao tác bổ sung: | Điều thực sự xảy ra là, khi bạn sử dụng 9, Python gọi 0 đến lượt nó là 1. Sau này, hoạt động bổ sung được thực hiện theo cách chúng tôi chỉ định. |
Tương tự, chúng ta cũng có thể quá tải các toán tử khác. Chức năng đặc biệt mà chúng ta cần thực hiện được lập bảng dưới đây. | Nhà điều hành | Biểu hiện |
Trong nội bộ | Phép cộng | 9 |
0 | Phép trừ | 4 |
5 | Phép nhân | 6 |
7 | Quyền lực | 8 |
9 | Phân công | 0 |
1 | Phân chia sàn | 2 |
3 | Phần còn lại (modulo) | 4 |
5 | Bitwise trái thay đổi | 6 |
class Point: def __init__(self, x=0, y=0): self.x = x self.y = y def __str__(self): return "({0}, {1})".format(self.x, self.y) p1 = Point(2, 3) print(p1)7
BitWise phải thay đổi
class Point:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __str__(self):
return "({0}, {1})".format(self.x, self.y)
p1 = Point(2, 3)
print(p1)
8class Point:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __str__(self):
return "({0}, {1})".format(self.x, self.y)
p1 = Point(2, 3)
print(p1)
9Traceback (most recent call last): File "0", line 9, in print(p1+p2) TypeError: unsupported operand type(s) for +: 'Point' and 'Point'
Đầu ra
Traceback (most recent call last): File "1", line 9, in print(p1+p2) TypeError: unsupported operand type(s) for +: 'Point' and 'Point'
Bitwise và
Chức năng đặc biệt của Python | Các chức năng của lớp bắt đầu với Double UnderCore Traceback (most recent call last): File "5 được gọi là các chức năng đặc biệt trong Python. | Các chức năng này không phải là các chức năng điển hình mà chúng tôi xác định cho một lớp. Hàm Traceback (most recent call last): File "6 mà chúng tôi xác định ở trên là một trong số đó. Nó được gọi là mỗi khi chúng ta tạo một đối tượng mới của lớp đó. |
---|---|---|
Có rất nhiều chức năng đặc biệt khác trong Python. Ghé thăm các chức năng đặc biệt của Python để tìm hiểu thêm về chúng. | Sử dụng các chức năng đặc biệt, chúng tôi có thể làm cho lớp của chúng tôi tương thích với các chức năng tích hợp. | Giả sử chúng ta muốn hàm Traceback (most recent call last): File "7 in tọa độ của đối tượng Traceback (most recent call last): File "4 thay vì những gì chúng ta có. Chúng ta có thể xác định một phương thức Traceback (most recent call last): File "9 trong lớp của chúng ta kiểm soát cách đối tượng được in. Hãy xem làm thế nào chúng ta có thể đạt được điều này: |
| Bây giờ chúng ta hãy thử lại chức năng Traceback (most recent call last): File "7. | Cái đó tốt hơn. Hóa ra, phương pháp tương tự này được gọi khi chúng ta sử dụng hàm tích hợp 1 hoặc 2. |
Vì vậy, khi bạn sử dụng 3 hoặc 4, Python gọi nội bộ là phương thức 5. Do đó tên, các chức năng đặc biệt. | Bây giờ chúng ta hãy quay lại quá tải nhà điều hành. | Quá tải người vận hành + |
Để quá tải toán tử Traceback (most recent call last): File "2, chúng tôi sẽ cần thực hiện chức năng 7 trong lớp. Với sức mạnh lớn đến trách nhiệm lớn. Chúng ta có thể làm bất cứ điều gì chúng ta thích, bên trong chức năng này. Nhưng việc trả về một đối tượng Traceback (most recent call last): File "4 của tổng tọa độ là hợp lý hơn. | Bây giờ chúng ta hãy thử lại thao tác bổ sung: | Điều thực sự xảy ra là, khi bạn sử dụng 9, Python gọi 0 đến lượt nó là 1. Sau này, hoạt động bổ sung được thực hiện theo cách chúng tôi chỉ định. |
Tương tự, chúng ta cũng có thể quá tải các toán tử khác. Chức năng đặc biệt mà chúng ta cần thực hiện được lập bảng dưới đây. | Nhà điều hành | Biểu hiện |
Trong nội bộ | Phép cộng | 9 |