Osa 8

Objekt och metoder

Detta är första delen av den Avancerade Kursen inom Programmering. Materialet är designat för att bli använt med Visual Studio Code editeraren, liksom den föregående kursen Introduktion till Programming. Ifall du inte använt Visual Studio Code tidigare, så hittar du installeringsinstruktionerna här och en introduktion till programmeringsomgivningen från förra kursen här.

I introduktion till Programmering kursen så lade vi märke till att det ofta är logiskt att gruppera relaterad 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. Alltså, kan vi ge deskriptiva namn till sakerna som förvaras 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 specifikt betydelsen av en oberoende helhet, i detta fall innehållande några bitar av data som på något vis är relaterade. Att vara oberoende betyder att ändringar till ett objekt inte påverkar andra objekt.

Ifall vi skulle skapa två strukturellt identiska representationer av böcker, användandes ordlistor och identiska nycklar, skulle ändringar som görs till en av dem 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

Datan som lagras i ett objekt kan kommas åt genom olika metoder. En metod är en funktion som opererar på ett specifikt objekt som den är kopplad till. Sättet att åtskilja mellan metoder och andra funktioner ligger i hur de är kallade: först skriver man namnet på objektet 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
# Metodkallelsen values() skrivs efter namnet på variabeln
# Kom ihåg punktnotation!
for varde in bok.values():
    print(varde)
Exempelutskrift

Den gamel och Python Ernest Pythonson 1952

På samma sätt opererar en strängmetod på det strängobjekt som den kallas på. Några exempel av 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 av en sträng. Liksom nämnt ovan är strängar i Python oföränderliga. Detta gäller däremot inte alla metoder; Pythonlistor är föränderliga, alltså kan listmetoder ändra innehållet av listan som de kallas på:

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.