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 MBOverriding 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.
class PrintedBook(Book):
def display_info(self):
print("Printed edition")Ova redefinicija ispisuje samo svoju poruku jer ne poziva super().display_info().
