刚刚学习python,对于运算符重载,也不是很懂,个人理解如下:
类的专有方法(未截完):
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
表示python创建的类中有这么多的方法,这些方法是类预定义的,在类的实例进行一些操作时,会调用相关的方法。
class Complex: def __init__(self, realpart, imagpart): self.r = realpart self.i = imagpart # def __str__(self): # return "r is {0}, i is {1}".format(self.r, self.i) x = Complex(2.0, -4.4) print(x)Complex类在没有重载__str__(self)方法时
输出如下
<__main__.Complex object at 0x011A8410> 即地址
class Complex: def __init__(self, realpart, imagpart): self.r = realpart self.i = imagpart def __str__(self): return "r is {0}, i is {1}".format(self.r, self.i) x = Complex(2.0, -4.4) print(x)
在Complex类重载__str__(self)方法后
输出如下
r is 2.0, i is -4.4
在这里类似Java中的重写toString()方法。
如果想对实例进行+,- 等运算符操作
class Complex: def __init__(self, realpart, imagpart): self.r = realpart self.i = imagpart # def __add__(self, other): # return self.i + self.r + other; x = Complex(2.0, -4.4) print(x + 2)没有重载__add__()方法时:报错了(错误是不支持操作类型+)
Traceback (most recent call last):
File "F:/pycharm/workspace/test21.py", line 9, in <module>
print(x + 2)
TypeError: unsupported operand type(s) for +: 'Complex' and 'int'
在重载__add__()方法后
class Complex: def __init__(self, realpart, imagpart): self.r = realpart self.i = imagpart def __add__(self, other): return self.i + self.r + other; x = Complex(2.0, -4.4) print(x + 2)
正常输出(精度异常)
-0.40000000000000036