Python 中的重载运算符
运算符重载意味着改变运算符在不同情况下的行为方式。 它是一种多态性。
通过运算符重载,我们可以为运算符添加额外的含义或功能以执行多个操作。
例如,+
运算符对整数操作数执行加法。 但是当与字符串操作数一起使用时,它会执行连接,因为 + 运算符被重载了。
Python 中的重载运算符
Python 提供了一种通过 Magic 方法重载具有用户定义数据类型的运算符的方法。 这些是当我们使用与它们关联的运算符时自动调用的特殊方法。
它们也被称为 Dunder 方法,因为它们以双下划线开头和结尾。
比如我们写运算符+的时候,后台会自动调用魔术方法 __add__()
。 因此,如果我们想对某些运算符进行运算符重载,只需要更改其魔术方法的代码即可。
在 Python 中重载 + 运算符
在下面的代码中,我们有一个用户定义的类,我们在其中实现了魔法方法 __add__()
来重载 + 运算符。
当我们写 int1 + int2 时,实际上在后端魔术方法 __add()__
被调用为 int1.__add__(int2)
。 同样的工作也适用于琴弦。
当我们编写 str1 + str2 时,魔术方法在内部被称为 str1.__add__(str2)
。
示例代码:
#Python 3.x
class MyAddion:
def __init__(self, a):
self.a = a
def __add__(self, b):
return self.a + b.a
int1 = MyAddion(2)
int2 = MyAddion(2)
str1 = MyAddion("fql")
str2 = MyAddion("jiyik")
print(int1 + int2)
print(str1 + str2)
输出:
#Python 3.x
4
fqljiyik
在 Python 中重载 > 运算符
在这里,我们重载了 MyComp 类中的 > 运算符。 当我们写运算符 > 时,魔术方法 __gt__()
在内部被调用。
所以当我们写 int1 > int2
时,魔术方法 __gt__()
被调用为 int1.__gt__(int2)
。 如果条件为真,则此方法返回真; 否则,它返回 false。
示例代码:
#Python 3.x
class MyComp:
def __init__(self, a):
self.a = a
def __gt__(self, b):
if(self.a>b.a):
return True
else:
return False
int1 = MyComp(5)
int2 = MyComp(3)
if(int1 > int2):
print(int1.a, "is greater than", int2.a)
else:
print(int2.a, "is greater than", int1.a)
输出:
#Python 3.x
5 is greater than 3
在 Python 中重载 == 运算符
在这里,我们在类 MyEquality 中重载了相等运算符 ==
。 当我们写 int1 == int2
时,内部魔术方法 __eq__()
将被调用为 int1.__eq__(int2)
。
如果两个操作数相等,则返回 Equal; 否则,它将返回 Not Equal。
示例代码:
#Python 3.x
class MyEquality:
def __init__(self, a):
self.a = a
def __eq__(self, b):
if(self.a == b.a):
return "Equal"
else:
return "Not equal"
int1 = MyEquality(3)
int2 = MyEquality(3)
print(int1 == int2)
输出:
#Python 3.x
Equal
值得注意的是,在运算符重载的情况下,我们无法更改运算符的操作数数量。 我们不能将一元运算符重载为二元运算符,反之亦然。
例如,我们不能将 ~
invert 运算符(一元运算符)重载为二元运算符。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串