<分区>
考虑以下 python 代码:
class MyClass:
def __radd__(self, a):
print "foo", a
return a
p = MyClass()
要调用 radd,可以运行以下命令:
>>> print "bar"+p
foo bar
bar
这是预期的行为。 __add__
运行并失败,因此 __radd__
接管并处理这种情况。
但是对于 numpy 数组,它的行为有点不同:
>>> v = np.arange(2)
>>> print v+p
foo 0.
foo 1.
[0. 1.]
似乎与上面的示例不同v.__add__
itterativly 遍历v
的组件并对它们执行p.__radd__
。换句话说,它已决定返回类型将是 ndarray
(只要代码不崩溃)。我知道这是试图变得聪明的 numpy,但有时我希望我的类(class)能够处理算术运算。
是否有可能使用 numpy 数组获得标准的 __radd__
行为?