Python 3.x 为什么python中的重载数学运算符取决于它的使用顺序?

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 我怎样才能使课堂发挥作用,使我能够以任何顺序进行数学

如果我创建了一个类,如下面的“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

我怎样才能使课堂发挥作用,使我能够以任何顺序进行数学运算

注意:Numpy阵列似乎能够以两种方式工作,即:

import numpy as np

1 / np.arange(1, 5)
np.arange(1, 5) / 1

按预期运行和工作。

还实现反射的dunder方法。在您的例子中,这是
\uuuurtruediv\uuuu()