python 重载运算符
什么是运算符重载
让自定义的类生成的对象(实例)能够使用运算符进行操作
作用:
让自定义的实例像内建对象一样进行运算符操作
让程序简洁易读
对自定义对象将运算符赋予新的规则
算术运算符的重载:
方法名 运算符和表达式 说明
__add__(self,rhs) self + rhs 加法
__sub__(self,rhs) self - rhs 减法
__mul__(self,rhs) self * rhs 乘法
__truediv__(self,rhs) self / rhs 除法
__floordiv__(self,rhs) self //rhs 地板除
__mod__(self,rhs) self % rhs 取模(求余)
__pow__(self,rhs) self **rhs 幂运算
在类中使用 敲出 def __
然后他就会显示所有可以重载的运算
class P:
def __init__(self, a=0, b=0, c=0):
self.a=a
self.b=b
self.c=c
def __str__(self):
return str(self.a)+" "+str(self.b)+" "+str(self.c)
def __add__(self, other):
t = P(self.a, self.b, self.c)
t.a += other.a
t.b += other.b
t.c += other.c
return t
def __sub__(self, other):
t = P(self.a, self.b, self.c)
t.a -= other.a
t.b -= other.b
t.c -= other.c
return t
def __eq__(self, other):
return self.a==other.a and self.b==other.b and self.c==other.c
def __mul__(self, other):
#这里把other当做一个数
t = P(self.a, self.b, self.c)
t.a *= other
t.b *= other
t.c *= other
return t
def __truediv__(self, other):
t = P(self.a, self.b, self.c)
t.a /= other
t.b /= other
t.c /= other
return t
if __name__ == '__main__':
d = P(10, 20, 30)
print("d is: ")
print(d)
e = P(1, 2, 3)
print("e is: ")
print(e)
f = d+e
print("f=d+e f is: ")
print(f)
f = d-e
print("f=d-e f is: ")
print(f)
f = d*2
print("f=d*2 f is: ")
print(f)
f = d / 10
print("f=d/10 f is: ")
print(f)
d is:
10 20 30
e is:
1 2 3
f=d+e f is:
11 22 33
f=d-e f is:
9 18 27
f=d*2 f is:
20 40 60
f=d/10 f is:
1.0 2.0 3.0