Überlastung Addition, Subtraktion, und Multiplikation von Operatoren
Wie tun Sie gehen über die überlastung der addition, Subtraktion und Multiplikation-operator, so können wir addieren, subtrahieren und multiplizieren von zwei Vektoren gleiche oder verschiedene Größen? Zum Beispiel, wenn die Vektoren sind in verschiedenen Größen wir müssen in der Lage sein, um hinzuzufügen, zu subtrahieren oder multiplizieren Sie die beiden Vektoren nach dem kleinsten Vektor-Größe?
Ich habe eine Funktion, die Ihnen erlaubt, zu modifizieren verschiedene Vektoren, aber jetzt bin ich kämpfen, um eine überlastung der Betreiber und habe keine Ahnung, wo zu beginnen. Ich werde fügen Sie den folgenden code ein. Irgendwelche Ideen?
def __add__(self, y):
self.vector = []
for j in range(len(self.vector)):
self.vector.append(self.vector[j] + y.self.vector[j])
return Vec[self.vector]
InformationsquelleAutor user3014014 | 2013-12-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du definieren Sie die
__add__
,__sub__
und__mul__
Methoden für die Klasse, das ist wie. Jede Methode nimmt zwei Objekte (Operanden von+
/-
/*
) als Argumente und ist voraussichtlich wieder das Ergebnis der Berechnung.self.vector[index].__add__(self, x)
???Auf die gleiche Weise definiert, die mit anderen Methoden; nur kleben Sie in die Klassendefinition.
würde
def __add__(self, x, y)
haben 2 Argumente wie diese?Nein, es geht
def __add__(self, y)
. Dieself
ist der linke operand zu+
.Möchten Sie vielleicht einen Blick auf die
fractions
- Modul. Beachten Sie den link zu der Quelle zu Recht an der Spitze. Das ist, weil es verwendet werden soll, als Beispielcode für das schreiben Ihrer eigenen numerischen Klassen. Es sieht viel komplizierter, als Sie brauchen, aber wenn Sie wirklich wollen, zu emulieren, alle Operatoren und arbeiten zu können, werden mit skalaren Werten (somyvec * 2
oder2 * myvec
Werke), und so weiter, der "komplizierte" Weg ist eigentlich einfacher als kopieren und einfügen alle die knifflig bits Dutzende Male.InformationsquelleAutor jwodder
docs haben die Antwort. Grundsätzlich gibt es Funktionen, die aufgerufen werden, auf ein Objekt, wenn Sie hinzufügen oder mehrere, etc. zum Beispiel
__add__
ist die normale Funktion hinzufügen.InformationsquelleAutor cmd
Nichts falsch mit der akzeptierten Antworten auf diese Frage, aber ich bin hinzufügen einige kurze snippets um zu veranschaulichen, wie diese verwendet werden können. (Beachten Sie, dass Sie auch "überlast", die Methode, um mehrere Arten.)
InformationsquelleAutor binarysubstrate