Úloha 1: Padajúce lopty - zo stránky https://www.w3resource.com/python-exercises/tkinter/python-tkinter-canvas-and-graphics-exercise-10.php skopírujte kód a prerobte ho tak, aby sa zvyšovala rýchlosť padania lopty s rastúcim počtom bodov.
Keď sa vám nebude páčiť chovanie niektorej metódy v nedtriede, stačí dať metódu s rovnakým menom do podtriedy:
class Maciatko(Zvieratko):
def zjedz(self, jedlo):
print(f"{self.meno}: {jedlo} mi vôbec nechutia!")
micka = Maciatko('Micka')
micka.zjedz('granule')
Niekedy sa môže stať, že potrebujeme použiť pôvodnú funkčnosť ale chceme aj niečo pridať. To môžeme spraviť pomocou špeciálnej funkcie super(), ktorá umožňuje volať metódy z nadtriedy. Napríklad:
class Maciatko(Zvieratko):
def zjedz(self, jedlo):
print(f"({self.meno} na {jedlo} chvíľu fascinovane pozerá.)")
super().zjedz(jedlo)
micka = Maciatko('Micka')
micka.zjedz('granule')
Dávajte pozor, aby ste metóde volané funkciou super() dali všetky potrebné argumenty (okrem argumentu self, tkorý sa doplní automaticky). Toto môžeme využiť tak, že pôvodný argument zmeníme a až potom ho posunieme do metódy v nadtriede.
class Hadatko(Zvieratko):
def __init__(self, meno):
jmeno = jmeno.replace('s', 'sss')
jmeno = jmeno.replace('S', 'Sss')
super().__init__(meno)
stano = Hadatko('Stanislav')
stano.zjedz('myš')
Z ukážok vidíme, že super() môžeme kombinovať so špeciálnymi metódami ako __init__
.
Úloha 2: Vytvorte nadtriedu vozidlo s vlastnosťami vyrobca, model a metódami __init__
a info().
Vytvorte podtriedu auto s vlastnosťou rok. Pomocou funkcie super() pridajte túto vlastnosť do metódy __init__
a info(). Vytvorte objekt triedy auto, vypíšte jeho vlastnosti pomocou metódy info().