如何在同一个Python 2.x脚本中同时使用from __future__ import division
和重载除法?
在Python中,我通常可以通过引入__div__
和/或__rdiv__
方法来覆盖除法运算符,例如
class A:
def __rdiv__(self, other):
return 2.1
a = A()
print 3/a
如果我在一个新的Python 2.7.6解释器中运行上面的内容,它会显示2.1
,即预期的结果。
另一方面,如果我以from __future__ import division
开头,则代码会失败并显示:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for /: 'int' and 'instance'
答案 0 :(得分:2)
除了__div__
/ __rdiv__
方法之外,在A
时调用__rtruediv__
__truediv__
和/或from __future__ import division
方法已生效。
(另请注意,在Python 2中,您确实应该让所有类继承自object
。)