在
Python 2.7.5中,我尝试了以下方法:
class compl1:
def __mul__(A,B):
adb=56
return adb
def __truediv__(A,B):
adb=56
return adb
u=compl1()
z=compl1()
print u*z
print u/z
为什么只有u * z工作,而u / z给出:
TypeError: unsupported operand type(s) for /: 'instance' and 'instance'
最佳答案 在Python 2中,除非你添加:
from __future__ import division
没有使用__truediv__钩子.通常使用__div__代替:
>>> class compl1:
... def __div__(self, B):
... return 'division'
... def __truediv__(self, B):
... return 'true division'
...
>>> compl1() / compl1()
'division'
>>> from __future__ import division
>>> compl1() / compl1()
'true division'
使用from __future__ import,旧的Python 2 /运算符将替换为Python 3行为,而使用该运算符的所有数字除法都会导致浮点结果.在Python 2中,如果你使用了两个int值,那么你就会得到分区,这很令人困惑.