2017-12-04 13 views
-1

Ich weiß wirklich nicht, wie ich den Fehler beheben soll.TypeError: nicht unterstützte Operandentyp (en) für +: 'Polynom' und 'Polynom'

Die Funktionen, die nicht funktionieren, sind sumPolynoms, multiplyPolynoms und raisePolynomial. Die Domain.Polynom ist die zweite.

import numpy as np 
from Domain.Polynom import Polynomial 
from numpy.polynomial import polynomial as P 

class PolyOperations: 
    def getDerivation(self,p): 
     polyNumpyRepresentation=p.getRepresentation() 
     derivation=np.polyder(polyNumpyRepresentation) 
     return derivation 
    def getValueOfPolynomial(self,p,x): 
     polyRepresentation=p.getRepresentation() 
     return np.polyval(polyRepresentation,x) 
    def sumPolynoms(self,p,q): 
     return np.polyadd(p,q) 
    def multiplyPolynoms(self,p,q): 
     return P.polymul(p,q) 
    def raisePolynomial(self,p,y): 
     return self.np.polypow(p,y) 

class Polynomial: 
    def __init__(self,coeficienti): 
     self.__coeficienti=coeficienti 
    def getCoefficients(self): 
     return self.__coeficienti 
    def addCoefficients(self,coef): 
     self.__coefficients.append(coef) 
    def getRepresentation(self): 
     return np.poly1d(self.getCoefficients()) 
+0

'//' in Python:


Alternativ können Sie die sumPolynoms selbst ändern? – eyllanesc

+0

Das sind nur ein paar Separatoren, in denen ich einige Kommentare zu den Funktionen schreibe. Das ist alles. –

+1

Aber das ist nicht gültig für Python, und zum Beispiel möchte ich Ihren Code ausführen und ich möchte nicht meine Zeit mit dem Löschen der '//' verschwenden, besser ändern Sie es mit '#' – eyllanesc

Antwort

0

Die Fehler bedeutet, dass p und q Sie passieren zu def sumPolynoms(self, p, q) nicht overload operator+ Objekte:

>>> class A: 
... pass 
... 
>>> a = A() 
>>> a + a 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unsupported operand type(s) for +: 'A' and 'A' 

Ich kann nur spekulieren, wie Sie Ihre Polynomial Klasse definiert ist, aber es braucht mindestens __add__ methode:

class Polynomial: 

    def __init__(self, np_array): 
     self.data = np_array 

    def __add__(self, other_polynomial): 
     return Polynomial(self.data + other_polynomial.data) 

Oder etwas ähnliches. multiplyPolynoms und raisePolynomial beschweren sich wahrscheinlich über das Fehlen von verschiedenen Operationen, so dass sie wahrscheinlich __mul__ und __pow__ Operationen benötigen.

def sumPolynoms(self, p, q): 
    numpy_array_from_p = p.some_attribute 
    numpy_array_from_q = q.some_attribute 
    return np.polyadd(numpy_array_from_p, numpy_array_from_q) 
+0

Nach Bearbeitung wie oben in der Polynomial-Klasse, habe ich diesen Fehler: [] –

+0

@DragosEfrim Dies ist kein Fehler, dies ist ein 'Polynom' Objekt in einer Liste. Da Sie den 'TypeError' nicht mehr bekommen, würde ich sagen, dass die erste Frage beantwortet wurde. In diesem Fall ermutigt die Stack-Überlauf-Community Sie, einige Zeit mit dem Debuggen Ihres neuen Problems zu verbringen und anschließend Informationen zu sammeln (_whole_ stack trace, Teil Ihres Codes, auf den der Stack-Trace zeigt) und eine separate Frage zu stellen. – Vovanrock2002

Verwandte Themen