use*_*314 3 python methods overriding division
在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
Run Code Online (Sandbox Code Playgroud)
为什么只有u*z工作,而u/z给出:
TypeError: unsupported operand type(s) for /: 'instance' and 'instance'
Run Code Online (Sandbox Code Playgroud)
在Python 2中,除非你添加:
from __future__ import division
Run Code Online (Sandbox Code Playgroud)
该__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'
Run Code Online (Sandbox Code Playgroud)
通过from __future__导入,旧的Python 2 /运算符将替换为Python 3行为,其中所有使用该运算符的数字除法都会导致浮点结果.在Python 2中,如果你使用了两个int值,那么你就得到了分区,这让人感到困惑.
| 归档时间: |
|
| 查看次数: |
1633 次 |
| 最近记录: |