如何重载除法并与Python2.x中的未来除法兼容
如何在同一个Python2.x脚本中同时使用来自未来导入分区的如何重载除法并与Python2.x中的未来除法兼容,python,operator-overloading,division,Python,Operator Overloading,Division,如何在同一个Python2.x脚本中同时使用来自未来导入分区的和重载分区 在Python中,我通常可以通过引入\uu div\uu和/或\uu rdiv\uu方法来覆盖除法运算符,例如 class A: def __rdiv__(self, other): return 2.1 a = A() print 3/a 如果我在一个新的Python 2.7.6解释器中运行上述内容,它将显示预期结果2.1 另一方面,如果我从uuu future uuuu import di
和重载分区
在Python中,我通常可以通过引入\uu div\uu
和/或\uu rdiv\uu
方法来覆盖除法运算符,例如
class A:
def __rdiv__(self, other):
return 2.1
a = A()
print 3/a
如果我在一个新的Python 2.7.6解释器中运行上述内容,它将显示预期结果2.1
另一方面,如果我从uuu future uuuu import division
中的一个开始,那么该代码将以以下内容失败:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for /: 'int' and 'instance'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:/:“int”和“instance”的操作数类型不受支持
除了\uuuu div\uuuu
/\uu rdiv\uuuu
方法之外,给出A
A和/或\uuu ruediv\uuuu
方法,当导入部门的生效时调用该方法
(还要注意,在Python2中,您确实应该让所有类都从对象
继承)