numpy.ndarray我有具有numpy.ndarray为成员,并通过重载__getitem__
和__getattr__
行为类似于ndarray一类:蟒运营商等
class Foo(object):
def __init__(values):
# numpy.ndarray
self._values = values
def __getitem__(self, key):
return self._values[key]
def __getattr__(self, name):
return getattr(self._values, name)
因此我可以使用像numpy的方法形状,大小......直接在这个类的对象上。我也可以做像obj.__add__(1)
这样的东西,它会把1加到obj._values
。但是,如果我尝试obj + 1
它会引发“不受支持的操作数类型”。我想获得obj + 1
的相同行为obj.__add__(1)
。如果不将__add__
添加到Foo
,这可能吗?
不,这是不可能的。你必须实现'__add__'。 – DyZ
Numpy 1.13rc2有一个mixin类,为你实现所有这些方法('numpy.lib.mixins.NDArrayOperatorsMixin') – Eric