实例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
注:在重写反运算魔法方法时,一定要注意顺序问题。
增量赋值运算:
比较操作符:
其它操作符: