Programmering nivå 2
Kap 3.2 – Skapa klasser och objekt
Definiera egna klasser och skapa objekt som har egna attribut och metoder.
Mål med lektionen
När du har arbetat klart med denna lektion ska du:
- Kunna definiera egna klasser i Python.
- Förstå hur man skapar och använder objekt från en klass.
- Kunna använda konstruktorer och skapa metoder i en klass.
Så här lär du dig bäst
Börja med att läsa exemplen och försök förstå hur varje del fungerar. Kopiera koden och kör den själv. Gör sedan små ändringar och se vad som händer. Tänk på hur du kan använda egna klasser för att beskriva verkliga företeelser.
Centrala begrepp
Kap 3.1 förklarade begreppen. Här använder du dem praktiskt när du skriver egna klasser.
- Klass: en mall som beskriver hur ett objekt ska fungera.
- Objekt: en instans av en klass som skapas när programmet körs.
__init__(): klassens konstruktor, som körs när objektet skapas.self: referens till det aktuella objektet inom klassen.- Metod: en funktion som tillhör en klass och använder
self.
Du behöver förstå dessa begrepp för att kunna bygga program med flera objekt som samarbetar. De är grunden för det objektorienterade arbetssättet.
Arbetsgång: från idé till klass
När du skapar en egen klass kan du följa samma ordning nästan varje gång:
- Bestäm vad klassen ska representera, till exempel
BookellerPerson. - Bestäm vilka attribut varje objekt behöver ha.
- Skriv konstruktorn
__init__()och spara attributen medself. - Lägg till metoder som beskriver vad objektet kan göra.
- Skapa ett eller flera objekt och testa metoderna.
Skapa och använda klasser
I Python definierar du en klass med nyckelordet class. Här är ett enkelt exempel på en
klass som representerar en bok:
class Book:
def __init__(self, title, author):
self.title = title
self.author = author
def print_info(self):
print(f"{self.title} av {self.author}")
Här definieras två attribut, title och author, samt en metod
print_info(). För att använda klassen skapar du ett objekt:
book1 = Book("1984", "George Orwell")
book1.print_info()
Detta skapar ett nytt objekt, book1, av typen Book. När du anropar metoden
print_info() använder objektet sina egna attribut.
Flera objekt från samma klass
En viktig poäng med klasser är att samma klass kan skapa flera objekt. Objekten har samma struktur, men egna värden.
book1 = Book("1984", "George Orwell")
book2 = Book("The Martian", "Andy Weir")
book1.print_info()
book2.print_info()
Båda objekten är skapade från klassen Book, men book1 och
book2 har olika värden i title och author.
Ändra ett attribut
Efter att ett objekt har skapats kan du ändra ett attribut med punktnotation.
book1.title = "Animal Farm"
book1.print_info()
Det här ändrar bara book1. Andra objekt som skapats från samma klass påverkas inte.
Öva: skapa en egen klass
Skriv en klass som heter Person. Den ska ha attributen name och
age, och en metod som skriver ut:
Hej, jag heter [namn] och är [ålder] år.
Tips:
- Börja med att skriva
class Person: - Lägg till en
__init__-metod medself,nameochage. - Lägg till en metod
say_hello()som skriver ut informationen. - Skapa två olika objekt, till exempel
person1ochperson2. - Testa att ändra åldern på ett av objekten efter att det skapats.
Interaktiv övning: skapa ett Person-objekt
Fyll i namn och ålder. Tryck först på Skapa objekt för att simulera
person1 = Person(name, age). Kör sedan metoden say_hello().
Programmering 2-koppling: __init__ sparar
värdena i objektet, och metoden använder sedan self.name och self.age
för utskriften.
Öva själv
Skapa filen kap3-2-person.py och skriv koden själv. Använd den här ordningen:
- Skriv klassen
Person. - Lägg till konstruktorn
__init__(self, name, age). - Spara
nameochagesom attribut medself. - Skapa metoden
say_hello(). - Skapa två objekt med olika namn och ålder.
- Kör
say_hello()på båda objekten. - Ändra åldern på ett objekt och kör metoden igen.
Kontrollera att ändringen bara påverkar det objekt du ändrar, inte alla objekt som skapats från klassen.
När du har försökt själv kan du ladda ner ett lösningsförslag: kap3-2-person-losningsforslag.py
Sammanfattning
- En klass i Python skapas med
classoch innehåller metoder och attribut. __init__används för att sätta upp objektets startvärden.selfanvänds för att referera till objektet självt.- Du skapar ett objekt genom att anropa klassen som en funktion.
- Samma klass kan skapa flera objekt med olika attributvärden.