ÖVNINGSUPPGIFT

Uppgift 1 - Skapa en klass och objekt av en bil

Försök själv först. Ledtrådar och facit finns längre ner – helt utan inloggning.


Nyckelord: klasser, objekt

Getters och setters används här som en övning. I vanlig Python-kod kan enkla attribut ofta användas direkt; property är ett alternativ om åtkomst behöver kontrolleras.

Datatyper och Variabler i Python

Nu är det dags att skapa vår första klass. Vi ska skapa en modell av en bil och lägga in typiska egenskaper för den. Vi kommer sedan kunna skapa olika versioner av klassen, så kallade objekt.

A: Skapa en klass

Börja med att skapa en ny klass med namn Car.

Ledtråd

I Python skapar man en klass med nyckelordet class. Exempelvis:

class Bike:
    pass

B: Skapa konstruktorn

Skapa konstruktorn för klassen Car. Skapa sedan instansattributna brand, color samt year. Konstruktorn ska ta in värdena till alla instansattribut och tilldela dessa värdena till motsvarande attribut.

Ledtråd

Man skapar konstruktorn med __init__(). I funktionshandtaget anger du de parametrar du vill skicka in när du instansierar objektet. Exempelvis:

class Bike:
    def __init__(self, color):
        self.color = color

Man anger alltid self när man skapar en klass i Python vilket är en referens till själva instansen (objektet). I detta fall skapar vi en ny instansattribut color och tilldelar denna instansattribut ett värde (color).

C: Skapa getters och setters

Skapa en getter och en setter för varje instansattribut. En getter returnerar värdet på instansattributn och settern tilldelar ett värde till instansattributn.

Ledtråd
# Getter
def get_color(self):
    return self.color

# Setter
def set_color(self, color):
    self.color = color

Exempel på en getter och setter i Python.

D: Instansiera objekt

Testa nu att skapa två olika instanser (objekt) av klassen Car. Använd dessa värden:

Bil 1

Brand: Volvo
Color: Blue
Year: 2022

Bil 2

Brand: Ford
Color: White
Year: 2018

Ledtråd

Skapa en ny instans av klassen genom att anropa konstruktorn för klassen. Glöm inte ange inparametrarna. Exempelvis:

car = Car(brand, year, color)

E: Skriv ut värdena från de olika objekten

Testa skriva ut några av attributen från de två olika objekten. Använd dina get-funktioner för att hämta värdet från instansen.

Ledtråd

Anropa dina getters från objektet. Exempelvis:

car.get_brand()
Svar

Exempel på hur man kan lösa uppgiften visas nedan:

class Car:
    def __init__(self, brand, year, color):
        self.brand = brand
        self.year = year
        self.color = color

    # Getters
    def get_brand(self):
        return self.brand
    
    def get_year(self):
        return self.year

    def get_color(self):
        return self.color

    # Setters
    def set_brand(self, brand):
        self.brand = brand
    
    def set_year(self, year):
        self.year = year

    def set_color(self, color):
        self.color = color

# Koden börjar här
if __name__ == '__main__':
    car = Car("Volvo", 2022, "Blue")
    car2 = Car("Ford", 2018, "White")

    print(car.get_brand())
    print(car2.get_color())

Här skapar vi två instanser av klassen, även kallade objekt. Vi döper objekten till car samt car2. Till konstruktorn anger vi de attribut som efterfrågades (Volvo, 2022. Blue) etc. Till sist anropar vi get-funktionena genom varje objekt. Utskriften i detta fall blir därför:

Volvo
White