Python Academy · leksjon

Enkel arv

Opprett underklasser som arver attributter og metoder fra en foreld klasse.

Leksjon 1 av 414 trinn

Enkel arv er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 4 leksjoner.

Introduksjon

Nedarving gjør det mulig for en underklasse å gjenbruke og utvide oppførselen til en overklasse uten å duplisere kode.

Definere en underklasse

class Dog(Animal): arver alt fra Animal. Underklassen kan legge til nye metoder eller overstyre eksisterende 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())

Kalle super().__init__

super().__init__(args) kaller overklassens __init__. Kall den alltid i underklassen når overklassen har logikk for oppsett.
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)

Arve metoder

Underklassen arver alle metodene fra overklassen. Hvis du ikke overstyrer dem, fungerer de uendret.
class Vehicle:
    def start(self): return 'starting'
class Car(Vehicle):
    pass
print(Car().start())

Overstyre metoder

Definer samme metodenavn i underklassen for å erstatte overklassens versjon. Det er underklassens versjon som kalles.
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())

Utvide overklassens oppførsel

Kall super().method() inne i overstyringen for å kjøre overklassens versjon først og deretter legge til mer funksjonalitet.
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() og issubclass()

isinstance(obj, Parent) returnerer True også for instanser av underklasser. issubclass(Child, Parent) kontrollerer klassehierarkiet.
class Animal: pass
class Dog(Animal): pass
d = Dog()
print(isinstance(d, Animal))
print(issubclass(Dog, Animal))

Underklassen legger til nye metoder

Underklassen kan definere helt nye metoder som overklassen ikke 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())

Beskyttede attributter

Konvensjonen _name signaliserer «ikke bruk dette utenfor klassen». Underklasser KAN bruke 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())

Abstrakte basisklasser

from abc import ABC, abstractmethod tvinger underklasser til å implementere 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__ og __mro__

Dog.__bases__ viser de direkte overklassene. Dog.__mro__ viser hele rekkefølgen for metodeoppslag.
class A: pass
class B(A): pass
class C(B): pass
print(C.__mro__)

Hurtigsjekk

Hva gjør super().__init__() i en underklasse?

Oppsummering

Nedarving: class Child(Parent). super() gir tilgang til overklassen. Overstyr metoder for å endre oppførsel. isinstance() kontrollerer hierarkiet. ABC håndhever abstrakte kontrakter.

Fortsett

Utmerket fremgang! Fortsett for å mestre det neste konseptet.
Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
76
Leksjoner
320

Ofte stilte spørsmål

Er leksjonen «Enkel arv» gratis?

Ja – hele teksten i «Enkel arv» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Enkel arv»?

Opprett underklasser som arver attributter og metoder fra en foreld klasse. Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Python Academy?

Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Enkel arv»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?

Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Enkel arv
  2. Overstyring av metoder og super()
  3. Multippel arv og MRO
  4. Polymorfisme og duck typing
← Tilbake til Python Academy