Python Academy · Lektion

Enkel arvshierarki

Skapa barnklasser som ärver attribut och metoder från en föräldraklass.

Lektion 1 av 414 steg

Enkel arvshierarki är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.

Introduktion

Arv låter en underklass återanvända och utöka beteendet hos en basklass utan att duplicera kod.

Definiera en underklass

class Dog(Animal): ärver allt från Animal. Underklassen kan lägga till nya metoder eller överskugga befintliga metoder.
class Animal:
    def __init__(self, name): self.name = name
    def speak(self): return '...'
class Dog(Animal):
    def speak(self): return 'Woof'
d = Dog('Rex')
print(d.name, d.speak())

Anropa super().__init__

super().__init__(args) anropar basklassens __init__. Anropa den alltid i underklassen när basklassen innehåller initieringslogik.
class Animal:
    def __init__(self, name): self.name = name
class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name)
        self.breed = breed
d = Dog('Rex', 'Labrador')
print(d.name, d.breed)

Ärva metoder

Underklassen ärver alla basklassens metoder. Om ni inte överskuggar dem fungerar de oförändrade.
class Vehicle:
    def start(self): return 'starting'
class Car(Vehicle):
    pass
print(Car().start())

Överskugga metoder

Definiera samma metodnamn i underklassen för att ersätta basklassens version. Det är underklassens version som anropas.
class Shape:
    def area(self): return 0
class Square(Shape):
    def __init__(self, s): self.s = s
    def area(self): return self.s**2
print(Square(4).area())

Utöka basklassens beteende

Anropa super().method() inuti överskuggningen för att först köra basklassens version och sedan lägga till mer funktionalitet.
class Animal:
    def describe(self): return 'I am an animal'
class Dog(Animal):
    def describe(self): return super().describe() + ' and a dog'
print(Dog().describe())

isinstance() och issubclass()

isinstance(obj, Parent) returnerar True även för instanser av underklasser. issubclass(Child, Parent) kontrollerar klasshierarkin.
class Animal: pass
class Dog(Animal): pass
d = Dog()
print(isinstance(d, Animal))
print(issubclass(Dog, Animal))

Underklassen lägger till nya metoder

Underklassen kan definiera helt nya metoder som basklassen inte har.
class Animal:
    def __init__(self, name): self.name = name
class Dog(Animal):
    def fetch(self): return f'{self.name} fetches!'
print(Dog('Rex').fetch())

Skyddade attribut

Konventionen med _name signalerar ”åtkomst ska inte ske utanför klassen”. Underklasser KAN använda dem.
class Animal:
    def __init__(self, name): self._name = name
    def name(self): return self._name
class Dog(Animal):
    def bark(self): return f'{self._name} barks'
print(Dog('Rex').bark())

Abstrakta basklasser

from abc import ABC, abstractmethod tvingar underklasser att implementera metoder.
from abc import ABC, abstractmethod
class Shape(ABC):
    @abstractmethod
    def area(self): pass
class Circle(Shape):
    def __init__(self, r): self.r = r
    def area(self):
        import math
        return math.pi * self.r**2
print(Circle(3).area())

__bases__ och __mro__

Dog.__bases__ visar de direkta basklasserna. Dog.__mro__ visar den fullständiga ordningen för metoduppslagning.
class A: pass
class B(A): pass
class C(B): pass
print(C.__mro__)

Snabbkontroll

Vad gör super().__init__() i en underklass?

Sammanfattning

Arv: class Child(Parent). super() ger åtkomst till basklassen. Överskugga metoder för att ändra beteendet. isinstance() kontrollerar hierarkin. ABC framtvingar abstrakta kontrakt.

Fortsätt

Utmärkta framsteg! Fortsätt för att bemästra nästa koncept.
Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
320

Vanliga frågor

Är lektionen ”Enkel arvshierarki” gratis?

Ja – hela texten till ”Enkel arvshierarki” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Enkel arvshierarki”?

Skapa barnklasser som ärver attribut och metoder från en föräldraklass. Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Python Academy?

Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Enkel arvshierarki”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Python Academy-lektionen?

Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Enkel arvshierarki
  2. Åsidosätta metoder och super()
  3. Multipelt arv och MRO
  4. Polymorfism och duck typing
← Tillbaka till Python Academy