Presentationer Slide 1/1

Kap 3.2

Skapa klasser och objekt

Nu skriver vi egna klasser och skapar objekt från dem.

Mål

Efter lektionen ska du kunna...

  • definiera egna klasser i Python
  • skapa objekt från en klass
  • använda __init__, self, attribut och metoder
  • ändra ett attribut på ett objekt

Repetition

Begreppen från 3.1

  • klass: mall för objekt
  • objekt: instans av en klass
  • attribut: data i objektet
  • metod: funktion som ligger i en klass
  • self: objektet som används just nu

Arbetsgång

Från idé till klass

  1. Bestäm vad klassen representerar.
  2. Bestäm vilka attribut objektet behöver.
  3. Skriv __init__().
  4. Lägg till metoder.
  5. Skapa objekt och testa.

Exempel

Klassen Book

class Book:
    def __init__(self, title, author):
        self.title = title
        self.author = author

    def print_info(self):
        print(f"{self.title} av {self.author}")

Class

Första raden

class Book:

class säger att vi skapar en klass.

Book är klassens namn.

Kolon betyder att klassens innehåll börjar under raden.

Konstruktor

__init__ körs direkt

def __init__(self, title, author):
    self.title = title
    self.author = author

Den körs när ett nytt Book-objekt skapas.

Den sparar startvärden i objektet.

Attribut

Värden sparas med self

self.title = title
self.author = author
  • title är parametern som kommer in.
  • self.title är attributet som sparas i objektet.
  • Varje objekt får egna attributvärden.

Metod

Objektet kan göra något

def print_info(self):
    print(f"{self.title} av {self.author}")

Metoden använder objektets egna attribut.

Därför måste den ha self.

Skapa objekt

Anropa klassen

book1 = Book("1984", "George Orwell")
  • Book(...) skapar ett nytt objekt.
  • "1984" skickas till title.
  • "George Orwell" skickas till author.
  • Objektet sparas i variabeln book1.

Använd objekt

Kör metoden

book1.print_info()
1984 av George Orwell

Metoden använder book1.title och book1.author.

Flera objekt

Samma klass, olika värden

book1 = Book("1984", "George Orwell")
book2 = Book("The Martian", "Andy Weir")

book1.print_info()
book2.print_info()

book1 och book2 är två olika instanser.

Utskrift

Varje objekt har egna attribut

1984 av George Orwell
The Martian av Andy Weir

Samma metod ger olika resultat eftersom objekten har olika data.

Ändra attribut

Punktnotation

book1.title = "Animal Farm"
book1.print_info()
Animal Farm av George Orwell

Det är bara book1 som ändras.

Viktigt

Klassen ändras inte

När du ändrar book1.title ändrar du ett objekt.

Du ändrar inte klassen Book.

Andra objekt från samma klass påverkas inte.

Öva

Skapa klassen Person

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print(f"Hej, jag heter {self.name} och är {self.age} år.")

Öva

Skapa två objekt

person1 = Person("Anna", 17)
person2 = Person("Erik", 18)

person1.say_hello()
person2.say_hello()

Båda objekten använder samma klass och samma metod.

Öva själv

kap3-2-person.py

  1. Skriv klassen Person.
  2. Lägg till __init__(self, name, age).
  3. Spara attributen med self.
  4. Skapa metoden say_hello().
  5. Skapa två objekt och kör metoden på båda.
  6. Ändra åldern på ett objekt och testa igen.

Sammanfattning

Kom ihåg

  • class skapar en klass.
  • __init__ sätter startvärden.
  • self pekar på aktuellt objekt.
  • Objekt skapas genom att anropa klassen.
  • Samma klass kan skapa flera objekt med olika värden.