✦ Srednji nivo Pythona i OOP Napredni OOP

L2 · Koncept 02 · Napredni OOP

Ista osnova.
Različito ponašanje.

EBook i PrintedBook čuvaju Book podatke uz sopstvene detalje.

Cilj učenjaKoristite super() za inicijalizaciju zajedničkih Book podataka i proširivanje nasleđene metode.
01 Uči02 Isprobaj03 Predvidi

Učenje kao gost

Učiš kao gost — sačuvaj svoj napredak!

Napravi besplatan nalog i uči uz Sloby AI mentora, proveru razumevanja i praćenje napretka.

Cela platforma je besplatna tokom 2026. Foundations ostaje zauvek besplatan.

Ponovo upotrebite roditelja, zatim ga proširite.

Ponavljanje inicijalizacije naslova, autora i godine u svakoj naslednoj klasi otežava održavanje koda.

class Book:
    def __init__(self, title, author, year):
        self.title = title
        self.author = author
        self.year = year
        self.is_available = True

    def display_info(self):
        print(f"{self.title} - {self.author}")

class EBook(Book):
    def __init__(self, title, author, year, file_size):
        super().__init__(title, author, year)
        self.file_size = file_size

    def display_info(self):
        super().display_info()
        print(f"File size: {self.file_size} MB")

ebook = EBook("Dune", "Frank Herbert", 1965, 5.2)
ebook.display_info()

super().__init__() poziva roditeljski konstruktor za zajedničke atribute. EBook zatim čuva file_size. Ovaj pojednostavljeni Book primer i dalje predstavlja zajedničko ponašanje punog projekta.

Dune - Frank Herbert File size: 5.2 MB

Overriding display_info() replaces the inherited method. When we call display_info() on an EBook object, Python uses the method defined in EBook first, if one exists. Calling super().display_info() keeps the parent output before adding new output.

↳

Imajte na umu: super() je koristan kada želite i roditeljsko ponašanje. Nije obavezan za svaku redefinisanu metodu.

Redefinisanje bez roditeljskog ispisa
class PrintedBook(Book):
    def display_info(self):
        print("Printed edition")

Ova redefinicija ispisuje samo svoju poruku jer ne poziva super().display_info().

Python radni prostor

Učitavanje Python okruženja…

Pokrenite EBook primer, zatim dovršite PrintedBook u mini izazovu.

super_overriding.pyPython
IzlazČeka se Python
Okruženje pregledača se učitava. I dalje možeš da menjaš primer koda.

Pyodide pokreće Python u Web Worker-u pregledača. Zaustavlja se i ponovo pokreće ako se kod predugo izvršava. Izvršavanje u pregledaču nije potpuna bezbednosna granica; ne unosi tajne i ne oslanjaj se na njega za izolaciju nepouzdanog koda.

Šta će ovaj program ispisati?

PrintedBook redefiniše display_info() bez pozivanja roditeljske metode.

class Book:
    def __init__(self, title, author, year):
        self.title = title

    def display_info(self):
        print(f"{self.title} - Frank Herbert")

class PrintedBook(Book):
    def display_info(self):
        print("Printed edition")

book = PrintedBook("Dune", "Frank Herbert", 1965)
book.display_info()
Izaberi izlaz

Vežbajte samostalno

Mini izazov — Proširite PrintedBook

Dodajte pages i proširite nasleđenu display metodu.

Vaš ciljKoristite super().__init__(), sačuvajte pages, zatim ispišite nasleđene informacije i broj stranica.

printed_book.py

Opcioni nagoveštaji
  • Pozovite super().__init__(title, author, year) pre čuvanja pages.
  • Pozovite super().display_info() pre ispisa Pages.
Pitajte Slobyja za nagoveštaj
Sloby, maskota Python AI Tutora

Tvoj mentor za učenje

Prijavite se da pitate Slobyja

Napravite besplatan nalog ili se prijavite za AI smernice tokom učenja.

Prijavite se da proverite svoje razumevanje

Napravite besplatan nalog ili se prijavite da biste dobili AI povratnu informaciju i sačuvali napredak u učenju.

Python AI Tutor · Uči razumevanjem, a ne samo pokretanjem koda.