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: 4Pokuš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.
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.
