obrazky
-

Ú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.

Prepisovanie metód a super()

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().

-
Copyright © 2008-2025 Miroslava Valíková