Python 中的运算符重载是什么

2024 年 8 月 29 日 | 5 分钟阅读

Python 中的运算符重载意味着为超出其预定义操作意义的运算符提供扩展的含义。例如,我们使用“+”运算符来添加两个整数,以及连接两个字符串或合并两个列表。我们可以通过“int”类和“str”类重载“+”运算符来实现这一点。用户可以注意到,相同的内置运算符或函数对不同类的对象显示出不同的行为。这个过程称为运算符重载。

示例

输出

46
JavaTpoint
322
X Y Z X Y Z X Y Z

如何在 Python 中重载运算符?

假设用户有两个对象,它们是用户定义数据类型类的物理表示。用户必须使用“+”运算符添加两个对象,这会产生错误。这是因为编译器不知道如何添加两个对象。因此,用户必须定义一个函数来使用该运算符,这个过程称为“运算符重载”。用户可以重载所有现有运算符,但不能创建任何新运算符。Python 提供了一些特殊函数,或者我们可以称之为魔法函数,用于执行运算符重载,当它与该运算符关联时会被自动调用。例如,当用户使用“+”运算符时,将自动调用定义了“+”运算符的命令中的魔法函数 \_\_add\_\_。

如何在 Python 中执行二进制“+”运算符

当用户在类的用户定义数据类型上使用运算符时,与运算符关联的魔法函数将被自动调用。更改运算符行为的过程与函数或方法定义的行为一样简单。

用户在类中定义方法或函数,运算符将根据函数中定义的行为进行操作。当用户使用“+”运算符时,它将更改魔法函数的代码,并且用户将获得“+”运算符的额外含义。

程序 1:简单地添加两个对象。

用于简单地使用重载运算符添加两个对象的 Python 程序。

示例

输出

Please enter the value: 23
Please enter the value: 21
:  44
Please enter the value: Java
Please enter the value: Tpoint
:  JavaTpoint

程序 2:在另一个对象中定义重载运算符

在另一个对象中定义重载运算符的 Python 程序。

示例

输出

(44, 34)

程序 3:在 Python 中重载比较运算符

用于重载比较运算符的 Python 程序。

示例

输出

情况 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 程序

示例

输出

情况 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 用于运算符重载的魔法函数

二进制运算符

运算符魔法函数
+__add__(self, other)
-__sub__(self, other)
*__mul__(self, other)
/__truediv__(self, other)
//__floordiv__(self, other)
%__mod__(self, other)
**__pow__(self, other)
>>__rshift__(self, other)
<<__lshift__(self, other)
&__and__(self, other)
|__or__(self, other)
^__xor__(self, other)

比较运算符

运算符魔法函数
<__LT__(SELF, OTHER)
>__GT__(SELF, OTHER)
<=__LE__(SELF, OTHER)
>=__GE__(SELF, OTHER)
==__EQ__(SELF, OTHER)
!=__NE__(SELF, OTHER)

赋值运算符

运算符魔法函数
-=__ISUB__(SELF, OTHER)
+=__IADD__(SELF, OTHER)
*=__IMUL__(SELF, OTHER)
/=__IDIV__(SELF, OTHER)
//=__IFLOORDIV__(SELF, OTHER)
%=__IMOD__(SELF, OTHER)
**=__IPOW__(SELF, OTHER)
>>=__IRSHIFT__(SELF, OTHER)
<<=__ILSHIFT__(SELF, OTHER)
&=__IAND__(SELF, OTHER)
|=__IOR__(SELF, OTHER)
^=__IXOR__(SELF, OTHER)

一元运算符

运算符魔法函数
-__NEG__(SELF, OTHER)
+__POS__(SELF, OTHER)
~__INVERT__(SELF, OTHER)

结论

在本教程中,我们讨论了 Python 中的运算符重载以及如何使用它们来执行各种运算符。