Magic Methods
Verfasst: Mittwoch 18. November 2015, 20:16
Hallo ich soll ein Programm schreiben, in dem u.a. die Addition und Subtraktion zweier Vektoren als magic method implementiert werden soll. Soweit mein Programm
Die magic methods beginnen mit
bzw.
Wie fülle ich diese functionen aus und wie rufe ich die Methoden auf?
Code: Alles auswählen
from __future__ import division
from sympy import *
import numpy as np
import csv
readVektor = csv.DictReader(open("data.csv")) # Einlesen der CVS-Datei
for column in readVektor: # Ausgeben der CSV-Datei-INhalte
print (column)
for column in readVektor: # Parsen der Inhalte der CSV-Datei
id = int(column["id"])
length = int(column["lenght"])
index = [int(x) for x in column["index"].split(' ')]
value = [int(x) for x in column["value"].split(' ')]
class sparse(object): # Klasse, deren Objekte sparse Vektoren sind
def __init__(self, index, value, lenght): # Konstruktor
self.Index = index
self.Value = value
self.Laenge = lenght
def maxNorm(self, value): # Berechnung der Maxmimums-Norm
maxNorm = max(value)
max_idx = value.index(maxNorm)
#return max_idx, maxNorm
print ("maxNorm: ", maxNorm)
def sMult(self, value1, value2): # Skalarmultiplikation
sMult = value1 * value2
#return sMult
print ("sMult: ", sMult)
def Summe(self, index1, index2, value1, value2): # Berechnung der Summe
#for i, j in range(len(index1, index2)):
# if index1(i) < index2(i):
# self.summe(i) = value1(i)
# if index1(i) > index2(i):
# self.summe(i) = value2(i)
# if index1(i) == index2(i):
# self.summe(i) = value1(i) + value2(i)
# return summe
summe = value1 + value2
#return summe
print ("summe: ", summe)
def Differenz(self, index1, index2, value1, value2):
differenz = value1 - value2
#return differenz
print ("differenz: ", differenz)
def __add__(self, other):
def __sub__(self,other):
def iProd(self, value1, value2):
iProd = np.dot (value1, value2)
#return iProd
print ("iProd: ", iProd)
#def Differenz(self, index1, index2, value1, value2): # Berechnung der Differenz
# for i in range(len(index1, index2))
# if index1(i) < index2(i)
# self.differenz(i) = value1(i)
# if index1(i) > index2(i)
# self.differenz(i) = value2(i)
# if index1(i) == index2(i)
# self.differenz(i) = value1(i) - value1(i)
#self.differenz = value1 - value2
#def Skalarprodukt(self, value1, value2): #Skalarprodukt
# for i in range(len(index1, index2))
# if index1(i) < index2(i)
# self.skalarprodukt(i) = 0
# if index1(i) > index2(i)
# self.skalarprodukt(i) = 0
# if index1(i) == index2(i)
# self.skalarprodukt(i) = value1(i) * value1(i)
#self.skalarprodukt = np.dot(value1, value2)
#print ("maxNorm: ", maxNorm)
#print ("summe: ", summe)
#print ("differenz: ", differenz)
#print ("sMult: ", sMult)
#print ("iProd: ", iProd)
sparsevector1 = sparse([2,9,5],[2,9,5],10)
sparsevector2 = sparse([3,5,8],[3,5,8],10)
sparsevector3 = sparse([1],[7],1)
sparsevector1.maxNorm([2,9,5])
sparsevector2.maxNorm([3,5,8])
sparsevector1.sMult(7,[2,9,5])
sparsevector2.sMult(7,[3,5,8])
sparsevector1.Summe([2,9,5],[3,5,8],[2,9,5],[3,5,8])
sparsevector2.Summe([2,9,5],[3,5,8],[2,9,5],[3,5,8])
#sparsevector1.Differenz([2,9,5],[3,5,8],[2,9,5],[3,5,8])
#sparsevector2.Differenz([2,9,5],[3,5,8],[2,9,5],[3,5,8])
sparsevector1.iProd([2,9,5],[3,5,8])
sparsevector2.iProd([2,9,5],[3,5,8])
Die magic methods beginnen mit
Code: Alles auswählen
def __sub__(self,other):
Code: Alles auswählen
def __add__(self,other):