在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'
Martijn Piet.. 7
在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行为,其中所有使用该运算符的数字除法都会导致浮点结果.在Python 2中,如果你使用了两个int
值,那么你就得到了分区,这让人感到困惑.
在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行为,其中所有使用该运算符的数字除法都会导致浮点结果.在Python 2中,如果你使用了两个int
值,那么你就得到了分区,这让人感到困惑.