Python 3.x 为什么python中的重载数学运算符取决于它的使用顺序?
如果我创建了一个类,如下面的“a”:Python 3.x 为什么python中的重载数学运算符取决于它的使用顺序?,python-3.x,operator-overloading,Python 3.x,Operator Overloading,如果我创建了一个类,如下面的“a”: class A(object): a = 1 def __truediv__(self, var): return self.a / var 然后尝试将一个int除以一个as: print(3 / A()) python引发了一个类型错误。但是,如果我将int除以此对象,python将打印: print(A() / 3) python打印0.333333 我怎样才能使课堂发挥作用,使我能够以任何顺序进行数学
class A(object):
a = 1
def __truediv__(self, var):
return self.a / var
然后尝试将一个int除以一个as:
print(3 / A())
python引发了一个类型错误。但是,如果我将int除以此对象,python将打印:
print(A() / 3)
python打印0.333333
我怎样才能使课堂发挥作用,使我能够以任何顺序进行数学运算
注意:Numpy阵列似乎能够以两种方式工作,即:
import numpy as np
1 / np.arange(1, 5)
np.arange(1, 5) / 1
按预期运行和工作。还实现反射的dunder方法。在您的例子中,这是
\uuuurtruediv\uuuu()