8 svar
80 visningar
Sami 37
Postad: 7 dec 2020 Redigerad: 7 dec 2020

klass

jag ska skapa en klass av polynom med en lista som parameter som är koefficienterna. Har även importerat en funktion som jag haft tidigare för att beräkna värdet av polynomet i en given punkt för x. Min kod hittills men vet ej riktigt hur jag ska skriva om jag vill 'printa' resultatet för ett för värde för p, resultatet skall vara graden av polynomet :

from functions import calculate_poly
class Polynomials:

  def __init__(self, p):
       self.p=[]

 def find_degree(self):
       degree=len(self.p-1)
       return degree

def find_value(self,x):
       value=calculate_poly(self.p,x)
      return value


Tex om p=[1,2,3] och x=2 ska det bli 17 (polynomets värde i punkten 2)och 2 (graden)
 

cjan1122 298
Postad: 7 dec 2020 Redigerad: 7 dec 2020

Du måste sätta self.p=p så funktionerna inuti får tillgång till listan som du får in som parameter. Då kan du skapa ex p1=Polynomials([1,2,3]) och testa printa p1.find_degree() och p1.find_value(2)

Borde även vara degree=len(self.p)-1 i find_degree och skulle personligen hellre kalla klassen för Polynomial i singular istället. Blir lite tydligare att du skapar ett polynomobjekt då

Aerius 510
Postad: 7 dec 2020

I koden är det missat lite i indenteringen. PEP-8 rekommenderar 4 mellanslag (inte tab). Vissa av indenteringarna ser ut att bara vara 3 i koden. I python är indenteringen viktig då det är indenteringen python använder för att särskilja olika kodblock.

cjan1122 skrev:

Du måste sätta self.p=p så funktionerna inuti får tillgång till listan som du får in som parameter. Då kan du skapa ex p1=Polynomials([1,2,3]) och testa printa p1.find_degree() och p1.find_value(2)

Borde även vara degree=len(self.p)-1 i find_degree och skulle personligen hellre kalla klassen för Polynomial i singular istället. Blir lite tydligare att du skapar ett polynomobjekt då

Håller med cjan1122 och skulle själv kallat metoderna för degree och value istället för find_degree respektive find_value.

Sami 37
Postad: 8 dec 2020

tack, det funkar bra nu! :D

Sami 37
Postad: 9 dec 2020

om man ska lägga till en plot, skall man göra det utanför klassen eller innaför?

Utanför. Varje klass bör följa Single Responsibility Principle där den gör en sak och gör den bra. Att plotta polynomet gör att klassen börjar göra alltför många saker. Det finns andra moduler (exvis matplotlib) som har plottning som sitt ansvarsområde. 

Sami 37
Postad: 9 dec 2020

aa tänkte använda matplotlib, men det ska ändå vara utanförklassen liksom?

Ja. Ditt program bör importera de moduler som innehåller de klasser som programmet behöver. Skapa objekten och anropa de metoder som behöver göra jobbet.

Svara Avbryt
Close