您的位置:

什么是 Python 中的运算符重载

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 中的重载运算符以及如何使用它们来执行各种运算符。