Jon*_*han 5 python arrays math numpy
考虑以下python代码:
class MyClass:
def __radd__(self, a):
print "foo", a
return a
p = MyClass()
Run Code Online (Sandbox Code Playgroud)
要唤起 radd,可以运行以下命令:
>>> print "bar"+p
foo bar
bar
Run Code Online (Sandbox Code Playgroud)
这是预期的行为。__add__运行并失败,因此__radd__接管并处理情况。但是对于 numpy 数组,它的行为略有不同:
>>> v = np.arange(2)
>>> print v+p
foo 0.
foo 1.
[0. 1.]
Run Code Online (Sandbox Code Playgroud)
似乎与上面的示例不同,v.__add__迭代地遍历v的组件并p.__radd__在它们上执行。换句话说,它决定返回类型是 an ndarray(只要代码不崩溃)。我知道这是试图变得聪明的 numpy,但有时我希望我的班级处理算术。
是否可以__radd__使用 numpy 数组获得标准行为?