Osa 8

Objekt och metoder

Detta är första delen av fortsättningskursen i programmering. Materialet är designat för att användas med programmeringsmiljön Visual Studio Code, precis som i den föregående kursen (Grundkurs i porgrammering). Ifall du inte använt Visual Studio Code tidigare, hittar du installeringsinstruktionerna här och en introduktion till programmeringsomgivningen från förra kursen här.

I grundkursen i programmering lade vi märke till att det ofta är logiskt att gruppera relaterade data tillsammans i våra program. Ifall vi till exemepl skulle förvara information om en bok skulle det vara logiskt att använda oss av en tupel eller en ordlista för att organisera datan till en enskild datastruktur.

Lösningen kunde se ut så här när man använder en tupel:

namn = "Kodningsboken"
författare = "Peter Python"
ar = 1992

# Vi sammanställer dessa i en ordlista
bok = (namn, författare, ar)

# Vi skriver ut bokens namn
print(bok[0])

I ett fall som detta är fördelen med att använda en ordlista att vi kan använda strängar istället för indexar som nycklar. Vi kan alltså ge beskrivande namn till de saker som lagras i datastrukturen:

namn = "Kodningsboken"
forfattare = "Peter Python"
ar = 1992

# Slår ihop till en ordlista
bok = {"namn": namn, "författare": forfattare, "år": ar}

# Vi skriver ut bokens namn
print(bok["namn"])

I båda fallen så skapar vi ett nytt objekt. Inom programmering har termen en specifik betydelse: ett objekt är en självständig (eller oberoende) helhet, som i detta fall innehåller data som på något vis är relaterade. Att ett objekt är oberoende eller självständigt betyder att ändringar som görs i ett objekt inte påverkar andra objekt.

Ifall vi skulle skapa två strukturellt identiska representationer av böcker med hjälp av ordlistor och identiska nycklar, skulle ändringar som görs i den ena inte påverka den andra:

bok1 = {"namn": "Den gamle och Python", "författare": "Ernest Pythonson", "år": 1952}
bok2 = {"namn": "Sju Python", "författare": "Aleksis Python", "år": 1894}

print(bok1["namn"])
print(bok2["namn"])

bok1["namn"] = "Ett nytt namn"

print(bok1["namn"])
print(bok2["namn"])
Exempelutskrift

Den gamle och Python Sju Python Ett nytt namn Sju Python

8 1 1

Objekt och metoder

Man kan komma åt data som lagras i ett objekt genom olika metoder. En metod är en funktion som opererar på ett specifikt objekt som den är kopplad till. Vi kan skilja på metoder och "vanliga" funktioner genom att se på hur de anropas, eftersom metoder används med punktnotation: först skriver man namnet på det objekt som avses, sedan en punkt och till sist metodens namn, åtföljt av argument ifall sådana finns. Till exempel returnerar metoden values alla värden som är lagrade i ett objekt av typen ordlista eller dict:

# detta skapar ett objekt av typen ordlista med namnet bok
bok = {"namn": "Den gamle och Python", "författare": "Ernest Pythonson", "år": 1952}

# Vi skriver ut alla värden
# Metodanropet values() skrivs efter namnet på variabeln
# Kom ihåg punktnotation!
for varde in bok.values():
    print(varde)
Exempelutskrift

Den gamle och Python Ernest Pythonson 1952

På samma sätt opererar en strängmetod på det strängobjekt som den kallas på. Några exempel på strängmetoder är count och find:

namn = "Påhittige Per"

# Skriv ut mängden P som förekommer
print(namn.count("P"))

# Mängden P som hittas i en annan sträng
print("Påhittade Praktiska Prepositioner".count("P"))

# Indexen av delsträngen Per
print(namn.find("Per"))

# Denna sträng har ingen matchande delsträng
print("Helt annan sträng".find("Per"))
Exempelutskrift

2 3 10 -1

Strängmetoder returnerar värden, men ändrar inte innehållet i en sträng eftersom strängar i Python är oföränderliga. Detta gäller däremot inte alla objekt och metoder. Listor i Python är föränderliga, alltså kan listmetoder ändra innehållet i den lista som den kallas på utan att skapa en ny referens eller ett nytt objekt.

lista = [1,2,3]

# Vi lägger till några element
lista.append(5)
lista.append(1)

print(lista)

# Vi tar bort ett element från början
lista.pop(0)

print(lista)
Exempelutskrift

[1, 2, 3, 5, 1] [2, 3, 5, 1]

Loading
Loading
Du har nått slutet av den här delen! Fortsätt till nästa del:

Se dina poäng genom att klicka på cirkeln nere till höger av sidan.