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 HobbitPokuš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}")
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.
