Overstyring av metoder og super()
Overstyr metoder fra foreldreklassen, og kall dem med super().
Overstyring av metoder og super() er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 2 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
Grunnleggende om overstyring
class Greeter:
def greet(self): return 'Hello'
class FormalGreeter(Greeter):
def greet(self): return 'Good day'
print(FormalGreeter().greet())super() i overstyringer
class Logger:
def log(self, msg): print(f'[LOG] {msg}')
class TimedLogger(Logger):
def log(self, msg):
import time
super().log(f'{time.time():.0f}: {msg}')
TimedLogger().log('test')super() i __init__
class Animal:
def __init__(self, name): self.name = name
class Cat(Animal):
def __init__(self, name, indoor):
super().__init__(name)
self.indoor = indoor
cat = Cat('Whiskers', True)
print(cat.name, cat.indoor)super() med argumenter
class A:
def greet(self): return 'A'
class B(A):
def greet(self): return super().greet() + 'B'
class C(B):
def greet(self): return super().greet() + 'C'
print(C().greet())Samarbeidende nedarving
class A:
def __init__(self): print('A init')
class B(A):
def __init__(self): super().__init__(); print('B init')
class C(A):
def __init__(self): super().__init__(); print('C init')
class D(B, C):
def __init__(self): super().__init__(); print('D init')
D()Overstyre __str__
class Animal:
def __init__(self, name): self.name = name
def __str__(self): return f'Animal: {self.name}'
class Dog(Animal):
def __str__(self): return f'Dog: {self.name}'
print(Dog('Rex'))Mønsteret Template Method
class DataProcessor:
def process(self):
data = self.load()
return self.transform(data)
def load(self): return [1,2,3]
def transform(self, d): return d
class Doubler(DataProcessor):
def transform(self, d): return [x*2 for x in d]
print(Doubler().process())Kalle en søsterklasses metode
class A:
def hello(self): print('A')
class B(A):
def hello(self): super().hello(); print('B')
class C(A):
def hello(self): super().hello(); print('C')
class D(B,C):
def hello(self): super().hello(); print('D')
D().hello()__init_subclass__
class Plugin:
registry = []
def __init_subclass__(cls, **kw):
super().__init_subclass__(**kw)
Plugin.registry.append(cls)
class A(Plugin): pass
class B(Plugin): pass
print([c.__name__ for c in Plugin.registry])Når du IKKE bør overstyre
# Good: only override what's needed
class Dog(Animal):
def speak(self): return 'Woof'
# No need to override __init__ if parent's is fine
print('override guidance')Hurtigsjekk
Oppsummering
Fortsett
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 «Overstyring av metoder og super()» gratis?
Ja – hele teksten i «Overstyring av metoder og super()» 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 «Overstyring av metoder og super()»?
Overstyr metoder fra foreldreklassen, og kall dem med super(). 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 2 av 4.
Hvor lang tid tar leksjonen «Overstyring av metoder og super()»?
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
- Enkel arv
- Overstyring av metoder og super()
- Multippel arv og MRO
- Polymorfisme og duck typing