Python基础入门学习笔记 043 魔法方法:算术运算2

发布时间 2023-08-23 10:59:15作者: 一杯清酒邀明月
实例1:
1 >>> class int(int):
2     def __add__(self,other):
3         return int.__sub__(self,other)
4 
5     
6 >>> a = int(3)
7 >>> b = int(2)
8 >>> a + b
9 1

反运算:

反运算与算术运算符的不同之处是,反运算多了一个'r',例如 __add__()的反运算对应为 __radd__()

>>> a + b

这里a是加数,b是被加数,如果a对象的__add__()方法没有实现或者不支持相应的操作,那么python就会自动调用b的__radd__()方法

实例:

1 >>> class Nint(int):
2     def __radd__(self,other):
3         return int.__sub__(self,other)
4 
5     
6 >>> a = Nint(5)
7 >>> b = Nint(3)
8 >>> a + b      #由于a对象默认有__add__()方法,所以b的__radd__()没有执行
9 8

实例2:

1 >>> class Nint(int):
2     def __radd__(self,other):
3         return int.__sub__(self,other)
4 
5     
6 >>> b = Nint(5)
7 >>> 3 + b         #由于3无__add__()方法,所以执行b的反运算__radd__(self,other)方法,其中self是b对象
8 2

注:在重写反运算魔法方法时,一定要注意顺序问题。

增量赋值运算:

 比较操作符:

 其它操作符: