LÄR DIG PYTHON

Klasser och objekt - Konstruktor i Python


Nyckelord: Klasser, Objekt, Konstruktor

När du anropar en klass skapas normalt en ny instans. Metoden __init__ initialiserar den med de attribut och startvärden som du vill ha. Den kallas ofta konstruktor i introduktioner, men själva skapandet hanteras av __new__.

Hur fungerar en Konstruktor i Python?

När man vill skapa ett objekt så anropar man konstruktorn. Man säger att man instansierar ett objekt.

Syntaxen för en konstruktor är:

def __init__(self, parameter1, parameter2): följs av ett indenterat kodblock i klassdefinitionen.

Du definierar __init__(self, ...) inuti klassen. Den anropas efter att objektet skapats. Parametern self refererar till instansen, så att du kan tilldela dess attribut.

Konstruktorn i korthet

  • Konstruktorn använder man för att initialisera nya objekt vid instansiering av en klass.
  • __init__ initialiserar objektet; __new__ skapar det.
  • self är den första parametern i __init__ och refererar till objektinstansen.
  • Konstruktorn kan ta flera parametrar för att anpassa objektets initialisering.
  • Instansattribut definieras och får ofta sina startvärden i __init__.
  • __init__ anropas automatiskt när en ny instans av en klass skapas.
  • Konstruktorn returnerar inte ett värde.
  • Konstruktorn är en del av klassdefinitionen.

Exempel: Konstruktor i Python

Vi såg ett exempel på en konstruktor i de två föregående avsnitten klasser och objekt när vi programmerade en klassen Car:

class Car:

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

    def drive(self):
        print(self.brand + ": Kör framåt")

    def brake(self):
        print(self.brand + ": Bromsar...")

__init__ anropas för att initialisera den nya instansen. Med self kan vi ge objekten olika attributvärden.

volvo = Car("Volvo", 2018, "Vit")
bmw = Car("BMW", 2005, "Black")

När vi skapar ett nytt objekt genom att anropa klassen, anropas __init__ funktionen. Med self, sparar vi undan våra inparametrar i objektet. Fastän vi har skapat båda objekten från samma klass, får vi olika beteenden:

volvo.drive()
bmw.brake()

Volvo: Kör framåt
BMW: Bromsar...

__init__ är också en metod. Den har en särskild roll när en instans skapas och ska returnera None, vanligtvis genom att inte skriva något return-uttryck.

Vanliga frågor och svar: Konstruktorn i Python

Vad är en konstruktor i Python?

En konstruktor är en speciell metod (__init__) som automatiskt körs vid skapandet av ett nytt objekt från en klass för att initialisera objektets attribut.

Måste varje klass i Python ha en konstruktor?

Det är inte nödvändigt för varje klass att ha en konstruktor. Om man inte definierar konstruktorn, använder Python en standardkonstruktor.

Hur definierar man en konstruktor i Python?

Du definierar __init__(self, ...) inuti klassen. Den anropas efter att objektet skapats. Parametern self refererar till instansen, så att du kan tilldela dess attribut.

Vad händer om man inte inkluderar self i en konstruktor?

En vanlig instansmetod får instansen som första argument automatiskt. Saknas en motsvarande parameter i definitionen blir anropet felaktigt. Namnet self är en konvention, inte ett reserverat ord.