Python 中的运算符重载意味着提供超出其预定义操作含义的扩展含义。例如,我们使用“+”运算符来相加两个整数,以及连接两个字符串或合并两个列表。我们可以通过“+”运算符被“int”类和“str”类重载来实现这一点。用户可以注意到,相同的内置运算符或函数对于不同类的对象表现出不同的行为。这个过程被称为运算符重载。
示例:
print (14 + 32)
# Now, we will concatenate the two strings
print ("Java" + "Tpoint")
# We will check the product of two numbers
print (23 * 14)
# Here, we will try to repeat the String
print ("X Y Z " * 3)
输出:
46
JavaTpoint
322
X Y Z X Y Z X Y Z
如何在 python 中控制操作符?
假设用户有两个对象,它们是用户定义的数据类型类的物理表示。用户必须使用“+”操作符相加两个对象,这会产生一个错误。这是因为编译器不知道如何相加两个对象。因此,用户必须定义使用运算符的函数,这个过程被称为“运算符重载”。用户可以重载所有现有的操作符,因为他们不能创建任何新的操作符。Python 提供了一些特殊的函数,或者我们可以说是用于执行运算符重载的神奇函数,当它与该运算符相关联时,就会被自动调用。例如,当用户使用“+”运算符时,魔法函数 add 将在定义“+”运算符的命令中自动调用。
如何在 Python 中执行二进制“+”运算符:
当用户在类的用户定义数据类型上使用运算符时,将自动调用与运算符相关联的神奇函数。改变操作者行为的过程和定义的函数或方法的行为一样简单。
用户在类中定义方法或函数,操作者根据函数中定义的行为工作。当用户使用“+”运算符时,会改变一个神奇函数的代码,用户就多了一个“+”运算符的含义。
程序 1:简单地相加两个对象。
Python 程序,用于简单地使用重载操作符来相加两个对象。
示例:
class example:
def __init__(self, X):
self.X = X
# adding two objects
def __add__(self, U):
return self.X + U.X
object_1 = example( int( input( print ("Please enter the value: "))))
object_2 = example( int( input( print ("Please enter the value: "))))
print (": ", object_1 + object_2)
object_3 = example(str( input( print ("Please enter the value: "))))
object_4 = example(str( input( print ("Please enter the value: "))))
print (": ", object_3 + object_4)
输出:
Please enter the value: 23
Please enter the value: 21
: 44
Please enter the value: Java
Please enter the value: Tpoint
: JavaTpoint
程序 2:在另一个对象中定义重载操作符
Python 程序,用于定义另一个对象内部的重载操作符。
示例:
class complex_1:
def __init__(self, X, Y):
self.X = X
self.Y = Y
# Now, we will add the two objects
def __add__(self, U):
return self.X + U.X, self.Y + U.Y
Object_1 = complex_1(23, 12)
Object_2 = complex_1(21, 22)
Object_3 = Object_1 + Object_2
print (Object_3)
输出:
(44, 34)
程序 3:在 Python 中重载比较运算符
用于重载比较运算符的 Python 程序。
示例:
class example_1:
def __init__(self, X):
self.X = X
def __gt__(self, U):
if(self.X > U.X):
return True
else:
return False
object_1 = example_1(int( input( print ("Please enter the value: "))))
object_2 = example_1(int (input( print("Please enter the value: "))))
if(object_1 > object_2):
print ("The object_1 is greater than object_2")
else:
print ("The object_2 is greater than object_1")
输出:
案例 1:
Please enter the value: 23
Please enter the value: 12
The object_1 is greater than object_2
案例 2:
Please enter the value: 20
Please enter the value: 31
The object_2 is greater than object_1
程序 4:重载等式和小于运算符
用于重载等式和小于运算符的 Python 程序:
示例:
class E_1:
def __init__(self, X):
self.X = X
def __lt__(self, U):
if(self.X < U.X):
return "object_1 is less than object_2"
else:
return "object_2 is less than object_1"
def __eq__(self, U):
if(self.X == U.X):
return "Both the objects are equal"
else:
return "Objects are not equal"
object_1 = E_1(int( input( print ("Please enter the value: "))))
object_2 = E_1(int( input( print ("Please enter the value: "))))
print (": ", object_1 < object_2)
object_3 = E_1(int( input( print ("Please enter the value: "))))
object_4 = E_1(int( input( print ("Please enter the value: "))))
print (": ", object_3 == object_4)
输出:
案例 1:
Please enter the value: 12
Please enter the value: 23
: object_1 is less than object_2
Please enter the value: 2
Please enter the value: 2
: Both the objects are equal
案例 2:
Please enter the value: 26
Please enter the value: 3
: object_2 is less than object_1
Please enter the value: 2
Please enter the value: 5
: Objects are not equal
用于运算符重载的 Python 神奇函数:
二进制运算符:
| 操作员 | 魔法函数 | | + | 添加 (自身、其他) | | - | sub(自身、其他) | | * | mul(自身、其他) | | / | truediv(自我,其他) | | // | floordiv(自身、其他) | | % | mod(自身、其他) | | ** | pow(自身,其他) | | >> | rshift(自身、其他) | | << | lshift (自我,其他) | | & | 和 (自身、其他) | | | | 或 (自身、其他) | | ^ | xor__(自身,其他) |
比较运算符:
| 操作员 | 魔法函数 | | < | LT(自我,其他) | | > | GT(自我,其他) | | <= | LE(自我,其他) | | >= | 通用电气 (自身、其他) | | == | EQ(自我,其他) | | != | NE__(自我,其他) |
分配运算符:
| 操作员 | 魔法函数 | | -= | ISUB(自我,其他) | | += | IADD(自我,其他) | | *= | IMUL(自身、其他) | | /= | IDIV(自我,其他) | | //= | IFLOORDIV(自我,其他) | | %= | IMOD(自我,其他) | | **= | IPOW(自我,其他) | | >>= | IRSHIFT(自我,其他) | | <<= | ILSHIFT(自我,其他) | | &= | 和 (自身,其他) | | |= | IOR(自我,其他) | | = | IXOR__(自我,其他) |
一元运算符:
| 操作员 | 魔法函数 | | - | 否定 (自我,其他) | | + | 位置 (自身、其他) | | ~ | _ 反转 _(自身,其他) |
结论
在本教程中,我们讨论了 Python 中的重载运算符以及如何使用它们来执行各种运算符。