✦ Srednji nivo Pythona i OOP Kolekcije

Koncept 05 · Kompozicija

Knjige su spremne.
Napravimo biblioteku!

Da li Library treba da nasleđuje Book ili da sadrži Book objekte?

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.

Jedna biblioteka. Različite knjige. Jedan funkcionalan sistem.

Da li Library treba da nasleđuje Book ili da sadrži Book objekte?

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}")
class AudioBook(Book):
    def display_info(self): print(f"Audio book: {self.title}")
class Library:
    def __init__(self): self.books=[]
    def add_book(self, book): self.books.append(book)
    def show_books(self):
        for book in self.books: book.display_info()
    def __len__(self): return len(self.books)
library=Library()
for book in (Book("Dune"),EBook("Python Basics"),PrintedBook("The Hobbit"),AudioBook("Python Stories")): library.add_book(book)
library.show_books()
print(f"Total books: {len(library)}")

Nasleđivanje — IS-A: EBook jeste vrsta knjige. Zato klasa EBook nasleđuje klasu Book. Kompozicija — HAS-A: Library nije vrsta knjige. Biblioteka ima knjige i čuva njihove objekte u self.books. Objekti rade zajedno: Library koristi objekte koje sadrži. Kada pokrenemo show_books(), svaka knjiga koristi svoju verziju metode display_info(). Metoda __len__() omogućava nam da izbrojimo knjige pomoću len(library).

Book: Dune EBook: Python Basics Printed book: The Hobbit Audio book: Python Stories Total books: 4

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}")
class AudioBook(Book):
    def display_info(self): print(f"Audio book: {self.title}")
class Library:
    def __init__(self): self.books=[]
    def add_book(self, book): self.books.append(book)
    def show_books(self):
        for book in self.books: book.display_info()
    def __len__(self): return len(self.books)
library=Library()
for book in (Book("Dune"),EBook("Python Basics"),PrintedBook("The Hobbit"),AudioBook("Python Stories")): library.add_book(book)
library.show_books()
print(f"Total books: {len(library)}")

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.

composition.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 Library:
    def __init__(self): self.books=[]
    def add_book(self, book): self.books.append(book)
    def __len__(self): return len(self.books)
library=Library(); library.add_book("Dune"); library.add_book("The Hobbit")
print(len(library)); library.add_book("Python Basics"); print(len(library))
Izaberi izlaz

Vežbajte samostalno

Mini izazov — Pronađite knjigu

Dodajte find_book() za pretragu Library kolekcije.

Vaš ciljProđite kroz self.books, vratite odgovarajući Book objekat ili None ako ne postoji.

find_book.py

Opcioni nagoveštaji
  • Uporedite book.title sa title unutar for petlje.
  • Vratite knjigu kada se poklopi; vratite None nakon 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.