在Python2.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__
导入,旧的python 2/
操作符将被python 3行为替换,其中使用该操作符的所有数值除法都将导致浮点结果。在Python2中,如果使用两个int
值,则会得到floor division,这令人困惑。关于python - 在python中覆盖truediv,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20589436/