Python Academy · Lektion

Enkelt nedarvning

Opret underklasser, der nedarver attributter og metoder fra en overklasse.

Lektion 1 af 414 trin

Enkelt nedarvning er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 4 lektioner i alt.

Introduktion

Nedarvning gør det muligt for en underklasse at genbruge og udvide en superklasses funktionalitet uden at duplikere kode.

Definition af en underklasse

class Dog(Animal): nedarver alt fra Animal. Underklassen kan tilføje nye metoder eller tilsidesætte 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())

Kald af super().__init__

super().__init__(args) kalder superklassens __init__. Kald den altid i underklassen, når superklassen har konfigurationslogik.
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)

Nedarvning af metoder

Underklassen nedarver alle superklassens metoder. Hvis du ikke tilsidesætter dem, fungerer de uændret.
class Vehicle:
    def start(self): return 'starting'
class Car(Vehicle):
    pass
print(Car().start())

Tilsidesættelse af metoder

Definer det samme metodnavn i underklassen for at erstatte superklassens version. Det er underklassens version, der kaldes.
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())

Udvidelse af superklassens funktionalitet

Kald super().method() inde i tilsidesættelsen for først at køre superklassens version og derefter tilføje mere 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() og issubclass()

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

Underklassen tilføjer nye metoder

Underklassen kan definere helt nye metoder, som superklassen 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

Konventionen _name signalerer, at attributten ikke skal tilgås uden for klassen. Underklasser KAN bruge den.
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 at 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 superklasser. Dog.__mro__ viser den fulde rækkefølge for metodeopslag.
class A: pass
class B(A): pass
class C(B): pass
print(C.__mro__)

Hurtig kontrol

Hvad gør super().__init__() i en underklasse?

Opsummering

Nedarvning: class Child(Parent). super() tilgår superklassen. Tilsidesæt metoder for at ændre funktionaliteten. isinstance() kontrollerer hierarkiet. ABC håndhæver abstrakte kontrakter.

Fortsæt

Fremragende fremgang! Fortsæt for at mestre det næste koncept.
Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
76
Lektioner
320

Ofte stillede spørgsmål

Er lektionen “Enkelt nedarvning” gratis?

Ja — hele teksten til “Enkelt nedarvning” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Enkelt nedarvning”?

Opret underklasser, der nedarver attributter og metoder fra en overklasse. Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Python Academy?

Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Enkelt nedarvning”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Python Academy-lektion?

Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Enkelt nedarvning
  2. Tilsidesættelse af metoder og super()
  3. Multipel nedarvning og MRO
  4. Polymorfi og duck typing
← Tilbage til Python Academy