8 svar
139 visningar
Sami 54
Postad: 7 dec 2020 18:33 Redigerad: 7 dec 2020 18:34

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 357
Postad: 7 dec 2020 19:12 Redigerad: 7 dec 2020 19:13

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 19:36

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.

Lindehaven 701 – Lärare
Postad: 8 dec 2020 09:14
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 54
Postad: 8 dec 2020 17:47

tack, det funkar bra nu! :D

Sami 54
Postad: 9 dec 2020 10:55

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

Lindehaven 701 – Lärare
Postad: 9 dec 2020 11:20

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 54
Postad: 9 dec 2020 11:21

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

Lindehaven 701 – Lärare
Postad: 9 dec 2020 11:24

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