小编Jon*_*han的帖子

如何让 __radd__ 使用 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 数组获得标准行为?

python arrays math numpy

5
推荐指数
1
解决办法
767
查看次数

标签 统计

arrays ×1

math ×1

numpy ×1

python ×1