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
文章目录