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)
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å
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
.
tack, det funkar bra nu! :D
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.
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.