Ich habe eine Klasse, die ein numpy.ndarray als Mitglied hat und verhält sich ähnlich durch ndarray __getitem__
und __getattr__
Überlastung:Python Operatoren für numpy.ndarray wie Klasse
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)
So kann ich die numpy Methode verwenden, wie Form, Größe, ... direkt auf einem Objekt dieser Klasse. Ich kann auch Dinge wie tun, die 1 zu obj._values
hinzufügen wird. Wenn ich jedoch obj + 1
versuche, löst es "nicht unterstützte Operandentyp (e)" aus. Ich möchte das gleiche Verhalten für obj + 1
als erhalten. Ist dies möglich, ohne __add__
zu Foo
hinzuzufügen?
Nein, das ist nicht möglich. Sie müssen '__add__' implementieren. – DyZ
Numpy 1.13rc2 hat eine Mixinklasse, die all diese Methoden für Sie implementiert ('numpy.lib.mixins.NDArrayOperatorsMixin') – Eric