【发布时间】:2018-05-25 11:18:19
【问题描述】:
我有一个类似于numpy.ndarray 的课程CustomArray。它重载了一堆算术运算符,如__add__、__mul__ 等。由于人们很可能将它与 numpy 结合使用,我担心有时会调用 numpy.ndarray 运算符而不是 CustomArray。最糟糕的是,它们实际上起作用并产生了一些不想要的结果。
a = np.array([1, 2, 3])
b = CustomArray([1, 2, 3])
c = a + b # np.ndarray.__add__ will be called!
有没有办法防止这种情况发生?所以解释器要么引发错误,要么总是更喜欢CustomArray 运算符重载。
【问题讨论】:
-
最近类似的问题(但没有答案):stackoverflow.com/questions/47600049/…
-
不,没有。如果左边的操作数实现了该方法,它首先被执行。
-
@jonrsharpe mb 有一种方法可以修改
CustomArray以便 numpy 产生一些合理的错误消息。 -
不清楚您认为“一些合理的错误消息”。除非是
NotImplemented,否则不会调用其他方法。
标签: python numpy operator-overloading operators