Quá tải toán tử có nghĩa là đưa ra ý nghĩa mở rộng vượt ra ngoài ý nghĩa hoạt động được xác định trước của chúng. Ví dụ, toán tử + được sử dụng để thêm hai số nguyên cũng như tham gia hai chuỗi và hợp nhất hai danh sách. Nó có thể đạt được bởi vì toán tử ‘++bị quá tải bởi lớp Int và lớp str. Bạn có thể nhận thấy rằng cùng một toán tử hoặc chức năng tích hợp cho thấy hành vi khác nhau cho các đối tượng của các lớp khác nhau, điều này được gọi là quá tải toán tử. & NBSP; means giving extended meaning beyond their predefined operational meaning. For example operator + is used to add two integers as well as join two strings and merge two lists. It is achievable because ‘+’ operator is overloaded by int class and str class. You might have noticed that the same built-in operator or function shows different behavior for objects of different classes, this is called Operator Overloading.
Thí dụ
Python3
print
[
1
+
2
3 GeeksFor 3 GeeksFor 3 GeeksFor0
print
[
3 GeeksFor 3 GeeksFor 3 GeeksFor3
+
3 GeeksFor 3 GeeksFor 3 GeeksFor5
3 GeeksFor 3 GeeksFor 3 GeeksFor0
print
[
3 GeeksFor 3 GeeksFor 3 GeeksFor9
ob2 is greater than ob10
ob2 is greater than ob11
3 GeeksFor 3 GeeksFor 3 GeeksFor0
print
[
3 GeeksFor 3 GeeksFor 3 GeeksFor3
ob2 is greater than ob10
ob2 is greater than ob11
3 GeeksFor 3 GeeksFor 3 GeeksFor0
Đầu ra
3 GeeksFor 12 GeeksGeeksGeeksGeeks
Làm thế nào để làm quá tải các toán tử trong Python? & NBSP;
Hãy xem xét rằng chúng ta có hai đối tượng là biểu diễn vật lý của một lớp [loại dữ liệu do người dùng xác định] và chúng ta phải thêm hai đối tượng với toán tử '+' nhị phân, nó đã gây ra lỗi, vì trình biên dịch không biết cách thêm hai đối tượng . Vì vậy, chúng tôi xác định một phương thức cho toán tử và quá trình đó được gọi là quá tải toán tử. Chúng ta có thể quá tải tất cả các toán tử hiện có nhưng chúng ta có thể tạo ra một nhà khai thác mới. Để thực hiện quá tải toán tử, Python cung cấp một số chức năng đặc biệt hoặc chức năng ma thuật được tự động gọi khi nó được liên kết với toán tử cụ thể đó. Ví dụ: khi chúng ta sử dụng toán tử +, phương thức ma thuật __add__ sẽ tự động được gọi trong đó hoạt động cho toán tử + được xác định.
Quá tải toán tử nhị phân + trong python: & nbsp;
Khi chúng tôi sử dụng toán tử trên các loại dữ liệu do người dùng xác định thì tự động chức năng đặc biệt hoặc hàm ma thuật được liên kết với toán tử đó sẽ được gọi. Thay đổi hành vi của toán tử cũng đơn giản như thay đổi hành vi của phương thức hoặc hàm. Bạn xác định các phương thức trong lớp và các nhà khai thác của bạn làm việc theo hành vi đó được xác định trong các phương thức. Khi chúng ta sử dụng toán tử +, phương thức ma thuật __add__ sẽ tự động được gọi trong đó hoạt động cho toán tử + được xác định. Do đó, thay đổi mã phương thức ma thuật này, chúng ta có thể cung cấp thêm ý nghĩa cho toán tử +. & NBSP;
Làm thế nào để người vận hành quá tải thực sự hoạt động?
Bất cứ khi nào bạn thay đổi hành vi của toán tử hiện có thông qua quá tải toán tử, bạn phải xác định lại chức năng đặc biệt được gọi tự động khi toán tử được sử dụng với các đối tượng. & NBSP;existing operator through operator overloading, you have to redefine the special function that is invoked automatically when the operator is used with the objects.
Ví dụ: & nbsp;
Mã 1: & nbsp; & nbsp;
Python3
ob2 is greater than ob19
ob1 is lessthan ob2 Not equal0
ob1 is lessthan ob2 Not equal1
ob1 is lessthan ob2 Not equal2
ob1 is lessthan ob2 Not equal3
ob1 is lessthan ob2 Not equal4
ob1 is lessthan ob2 Not equal5
ob1 is lessthan ob2 Not equal6
ob1 is lessthan ob2 Not equal4
ob1 is lessthan ob2 Not equal8
ob1 is lessthan ob2 Not equal9
This is the ~ operator, overloaded as binary operator.0
ob1 is lessthan ob2 Not equal1
ob1 is lessthan ob2 Not equal2
This is the ~ operator, overloaded as binary operator.3
ob1 is lessthan ob2 Not equal4
This is the ~ operator, overloaded as binary operator.5
ob1 is lessthan ob2 Not equal6
This is the ~ operator, overloaded as binary operator.7
ob1 is lessthan ob2 Not equal4
ob1 is lessthan ob2 Not equal8
+
print
1print
2
ob1 is lessthan ob2 Not equal9
print
41
____10print
7
ob1 is lessthan ob2 Not equal9
print
42
3 GeeksFor 3 GeeksFor 3 GeeksFor0
[
2
ob1 is lessthan ob2 Not equal9
print
43 GeeksFor 3 GeeksFor 3 GeeksFor3
3 GeeksFor 3 GeeksFor 3 GeeksFor0
[
7
ob1 is lessthan ob2 Not equal9
print
43 GeeksFor 3 GeeksFor 3 GeeksFor5
3 GeeksFor 3 GeeksFor 3 GeeksFor0
print
1
3+
1
5
print
1
77____8 1
9
print
+
1
print
+
3
print
+
5
print
+
7
Đầu ra
3 GeeksFor 3 GeeksFor 3 GeeksFor
Làm thế nào để làm quá tải các toán tử trong Python? & NBSP;__add__[ ]” and when the objects ob1 and ob2 are coded as “ob1 + ob2“, the special function is automatically called as ob1.__add__[ob2] which simply means that ob1 calls the __add__[ ] function with ob2 as an Argument and It actually means A .__add__[ob1, ob2]. Hence, when the Binary operator is overloaded, the object before the operator calls the respective function with object after operator as parameter.
Hãy xem xét rằng chúng ta có hai đối tượng là biểu diễn vật lý của một lớp [loại dữ liệu do người dùng xác định] và chúng ta phải thêm hai đối tượng với toán tử '+' nhị phân, nó đã gây ra lỗi, vì trình biên dịch không biết cách thêm hai đối tượng . Vì vậy, chúng tôi xác định một phương thức cho toán tử và quá trình đó được gọi là quá tải toán tử. Chúng ta có thể quá tải tất cả các toán tử hiện có nhưng chúng ta có thể tạo ra một nhà khai thác mới. Để thực hiện quá tải toán tử, Python cung cấp một số chức năng đặc biệt hoặc chức năng ma thuật được tự động gọi khi nó được liên kết với toán tử cụ thể đó. Ví dụ: khi chúng ta sử dụng toán tử +, phương thức ma thuật __add__ sẽ tự động được gọi trong đó hoạt động cho toán tử + được xác định.
Python3
Quá tải toán tử nhị phân + trong python: & nbsp;
Khi chúng tôi sử dụng toán tử trên các loại dữ liệu do người dùng xác định thì tự động chức năng đặc biệt hoặc hàm ma thuật được liên kết với toán tử đó sẽ được gọi. Thay đổi hành vi của toán tử cũng đơn giản như thay đổi hành vi của phương thức hoặc hàm. Bạn xác định các phương thức trong lớp và các nhà khai thác của bạn làm việc theo hành vi đó được xác định trong các phương thức. Khi chúng ta sử dụng toán tử +, phương thức ma thuật __add__ sẽ tự động được gọi trong đó hoạt động cho toán tử + được xác định. Do đó, thay đổi mã phương thức ma thuật này, chúng ta có thể cung cấp thêm ý nghĩa cho toán tử +. & NBSP;
ob1 is lessthan ob2 Not equal6
ob1 is lessthan ob2 Not equal4
ob1 is lessthan ob2 Not equal8
ob1 is lessthan ob2 Not equal9
This is the ~ operator, overloaded as binary operator.0
ob1 is lessthan ob2 Not equal1
ob1 is lessthan ob2 Not equal2
This is the ~ operator, overloaded as binary operator.3
ob1 is lessthan ob2 Not equal4
This is the ~ operator, overloaded as binary operator.5
ob1 is lessthan ob2 Not equal6
This is the ~ operator, overloaded as binary operator.7
ob1 is lessthan ob2 Not equal4
ob1 is lessthan ob2 Not equal8
+
print
1print
2
ob1 is lessthan ob2 Not equal9
print
41
____10print
7
ob1 is lessthan ob2 Not equal9
print
42
3 GeeksFor 3 GeeksFor 3 GeeksFor0
[
2
ob1 is lessthan ob2 Not equal9
print
43 GeeksFor 3 GeeksFor 3 GeeksFor3
3 GeeksFor 3 GeeksFor 3 GeeksFor0
[
7
ob1 is lessthan ob2 Not equal9
print
43 GeeksFor 3 GeeksFor 3 GeeksFor5
3 GeeksFor 3 GeeksFor 3 GeeksFor0
print
3 GeeksFor 3 GeeksFor 3 GeeksFor43
print
1
3+
1
5
Python3
ob2 is greater than ob19
ob1 is lessthan ob2 Not equal0
ob1 is lessthan ob2 Not equal1
ob1 is lessthan ob2 Not equal2
ob1 is lessthan ob2 Not equal3
ob1 is lessthan ob2 Not equal4
ob1 is lessthan ob2 Not equal5
ob1 is lessthan ob2 Not equal6
ob1 is lessthan ob2 Not equal4
ob1 is lessthan ob2 Not equal8
ob1 is lessthan ob2 Not equal9
This is the ~ operator, overloaded as binary operator.0
ob1 is lessthan ob2 Not equal1
ob1 is lessthan ob2 Not equal2
This is the ~ operator, overloaded as binary operator.3
ob1 is lessthan ob2 Not equal4
This is the ~ operator, overloaded as binary operator.5
ob1 is lessthan ob2 Not equal6
3 GeeksFor 3 GeeksFor 3 GeeksFor62
[
ob1 is lessthan ob2 Not equal4
3 GeeksFor 3 GeeksFor 3 GeeksFor65
ob1 is lessthan ob2 Not equal6
This is the ~ operator, overloaded as binary operator.7
ob1 is lessthan ob2 Not equal4
ob1 is lessthan ob2 Not equal8
+
print
1ob1 is lessthan ob2 Not equal6
3 GeeksFor 3 GeeksFor 3 GeeksFor70
2
0print
2
ob1 is lessthan ob2 Not equal9
print
41
____10print
7
ob1 is lessthan ob2 Not equal9
print
42
3 GeeksFor 3 GeeksFor 3 GeeksFor0
[
2
ob1 is lessthan ob2 Not equal9
print
43 GeeksFor 3 GeeksFor 3 GeeksFor3
3 GeeksFor 3 GeeksFor 3 GeeksFor0
3 GeeksFor 3 GeeksFor 3 GeeksFor62
3 GeeksFor 3 GeeksFor 3 GeeksFor86
ob1 is lessthan ob2 Not equal1
print
[
3 GeeksFor 3 GeeksFor 3 GeeksFor90
3 GeeksFor 3 GeeksFor 3 GeeksFor0
3 GeeksFor 3 GeeksFor 3 GeeksFor70
2
0ob1 is lessthan ob2 Not equal1
print
[
3 GeeksFor 3 GeeksFor 3 GeeksFor97
3 GeeksFor 3 GeeksFor 3 GeeksFor0
Output:
ob2 is greater than ob1
Quá tải bình đẳng và ít hơn các toán tử: & nbsp;
Python3
ob2 is greater than ob19
ob1 is lessthan ob2 Not equal0
ob1 is lessthan ob2 Not equal1
ob1 is lessthan ob2 Not equal2
ob1 is lessthan ob2 Not equal3
ob1 is lessthan ob2 Not equal4
ob1 is lessthan ob2 Not equal5
ob1 is lessthan ob2 Not equal6
ob1 is lessthan ob2 Not equal4
ob1 is lessthan ob2 Not equal8
ob1 is lessthan ob2 Not equal9
This is the ~ operator, overloaded as binary operator.0
ob1 is lessthan ob2 Not equal1
ob1 is lessthan ob2 Not equal2
ob2 is greater than ob113
ob1 is lessthan ob2 Not equal4
3 GeeksFor 3 GeeksFor 3 GeeksFor10
ob1 is lessthan ob2 Not equal6
3 GeeksFor 3 GeeksFor 3 GeeksFor62
[
ob1 is lessthan ob2 Not equal4
ob2 is greater than ob120
3 GeeksFor 3 GeeksFor 3 GeeksFor66
This is the ~ operator, overloaded as binary operator.7
ob2 is greater than ob123
ob1 is lessthan ob2 Not equal6
3 GeeksFor 3 GeeksFor 3 GeeksFor70
2
03 GeeksFor 3 GeeksFor 3 GeeksFor66
This is the ~ operator, overloaded as binary operator.7
ob2 is greater than ob129
ob1 is lessthan ob2 Not equal1
ob1 is lessthan ob2 Not equal2
ob2 is greater than ob132
ob1 is lessthan ob2 Not equal4
3 GeeksFor 3 GeeksFor 3 GeeksFor10
ob1 is lessthan ob2 Not equal6
3 GeeksFor 3 GeeksFor 3 GeeksFor62
[
ob1 is lessthan ob2 Not equal4
ob1 is lessthan ob2 Not equal8
ob1 is lessthan ob2 Not equal9
ob1 is lessthan ob2 Not equal9
3 GeeksFor 3 GeeksFor 3 GeeksFor66
This is the ~ operator, overloaded as binary operator.7
ob2 is greater than ob145
ob1 is lessthan ob2 Not equal6
3 GeeksFor 3 GeeksFor 3 GeeksFor70
2
03 GeeksFor 3 GeeksFor 3 GeeksFor66
This is the ~ operator, overloaded as binary operator.7
ob2 is greater than ob151
print
2
ob1 is lessthan ob2 Not equal9
print
42
__print
7
ob1 is lessthan ob2 Not equal9
print
43 GeeksFor 3 GeeksFor 3 GeeksFor9____10
print
ob2 is greater than ob163
[
2
ob1 is lessthan ob2 Not equal9
print
4ob2 is greater than ob11
3 GeeksFor 3 GeeksFor 3 GeeksFor0
[
7
ob1 is lessthan ob2 Not equal9
print
4ob2 is greater than ob11
3 GeeksFor 3 GeeksFor 3 GeeksFor0
print
1
3
ob1 is lessthan ob2 Not equal9
ob1 is lessthan ob2 Not equal9
1
5Output:
ob1 is lessthan ob2 Not equal