✦ Srednji nivo Pythona i OOP Kolekcije

Koncept 03 · Polimorfizam

Jedan poziv.
Različiti rezultati.

Book, EBook i PrintedBook sada možemo obrađivati zajedno. Kako jedna petlja može raditi sa različitim vrstama knjiga bez provere njihovih tipova?

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.

Različiti objekti mogu odgovoriti na isti poziv metode na svoj način.

Book, EBook i PrintedBook sada možemo obrađivati zajedno. Kako jedna petlja može raditi sa različitim vrstama knjiga bez provere njihovih tipova?

class Book:
    def __init__(self, title): self.title = title
    def display_info(self): print(f"Book: {self.title}")

class EBook(Book):
    def display_info(self): print(f"EBook: {self.title}")

class PrintedBook(Book):
    def display_info(self): print(f"Printed book: {self.title}")

books = [Book("Dune"), EBook("Python Basics"), PrintedBook("The Hobbit")]
for book in books:
    book.display_info()

Svaki objekat ima display_info(). Poziv je isti, ali Python bira implementaciju prema stvarnom tipu objekta. Ime promenljive u petlji ne bira metodu. Nasleđivanje daje EBook klasi Book atribute i metode. Redefinisanje metoda daje EBook klasi sopstvenu display_info(). Polimorfizam omogućava da isti display_info() poziv radi sa svakim objektom i daje sopstveni rezultat.

Book: Dune EBook: Python Basics Printed book: The Hobbit

Pokušaj da promeniš jednu vrednost, zatim objasni koji deo kolekcije se promenio i zašto.

↳

Zapamti: Pročitaj operaciju nad kolekcijom pre nego što predvidiš rezultat.

Isprobaj
class Book:
    def __init__(self, title): self.title = title
    def display_info(self): print(f"Book: {self.title}")

class EBook(Book):
    def display_info(self): print(f"EBook: {self.title}")

class PrintedBook(Book):
    def display_info(self): print(f"Printed book: {self.title}")

books = [Book("Dune"), EBook("Python Basics"), PrintedBook("The Hobbit")]
for book in books:
    book.display_info()

Pokreni primer, zatim promeni jednu vrednost i posmatraj rezultat.

Python radni prostor

Učitavanje Python okruženja…

Izmeni primer i pokreni ga u pregledaču.

polymorphism.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?

Pročitaj svaku operaciju pre nego što izabereš odgovor.

class Book:
    def message(self): print("A book")
class EBook(Book):
    def message(self): print("A digital book")
items = [Book(), EBook(), Book()]
for item in items: item.message()
Izaberi izlaz

Vežbajte samostalno

Mini izazov — Dodajte AudioBook

Dodajte AudioBook i neka je postojeća petlja prikaže.

Vaš ciljNapravite klasu AudioBook koja nasleđuje Book i redefiniše display_info(). Dodajte audio-knjigu u postojeću listu books, bez menjanja tela for petlje.

add_audiobook.py

Opcioni nagoveštaji
  • Definišite AudioBook(Book) i redefinišite display_info() da prikaže njen naslov.
  • Dodajte AudioBook("Python Stories") pre postojeće petlje; ne menjajte telo petlje.
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.