NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Funkce, kterou se snažíš použít je dostupná pouze pro registrované uživatele. Buďto se přihlas nebo si zdarma vytvoř nový účet.

Diskuze – Lekce 10 - Dědičnost a polymorfismus v Pythonu

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Vít Řezníček:8.5.2023 16:57

Testování typu třídy pro mě aktuálně vypadá jako random zatoulaná kapitola, ze které jsem nic nepochytil. Bylo by dobré přiblížit. Jinak moc pěkná lekce.

 
Odpovědět
+1
8.5.2023 16:57
Avatar
Petr Dostál
Člen
Avatar
Petr Dostál:4.6.2023 11:19

Dědičnost pochopena pouze u Testování typu třídy tam už tápu

Odpovědět
4.6.2023 11:19
Nikdy není pozdě
Avatar
Hana Svobodová:7.7.2023 17:25

Dědičnost a polymorfismus celkem srozumitelné, testování typu třídy ale není dobře vysvětleno - k čemu je dobré, co se vlastně testuje, jak to funguje.

 
Odpovědět
7.7.2023 17:25
Avatar
Michal Duvet
Člen
Avatar
Michal Duvet:8.10.2023 0:09

Znovu mi přijde spousta věcí nedostatečně vysvětlených, začíná to být vážně otravné a bylo by fajn, kdyby se feedback od uživatelů skutečně začal brát zřetel. Koneckonců my financujeme tento obsah.
Konkrétně Testování typu třídy mi přijde velmi nedostatečně vysvětlené.

 
Odpovědět
+1
8.10.2023 0:09
Avatar
Peter Kačmarík:11.10.2023 21:09

Polymorfizmus:

class Zviera:
    def __init__(self, meno):
        self.meno = meno

    def zvuk(self):
        pass  # Táto metóda bude prepísaná v podtriedach

class Pes(Zviera):
    def zvuk(self):
        return "Haf!"

class Macka(Zviera):
    def zvuk(self):
        return "Mňau!"

# Hlavná časť programu
zviera1 = Pes("Azor")
zviera2 = Macka("Micka")

zvierata = [zviera1, zviera2]

for zviera in zvierata:
    print(f"{zviera.meno} znie: {zviera.zvuk()}")
 
Odpovědět
+2
11.10.2023 21:09
Avatar
Peter Kačmarík:11.10.2023 21:10

Dedicnost:

# Nadtrieda (Superclass)
class Zivocich:
    def __init__(self, meno, vek):
        self.meno = meno
        self.vek = vek

    def predstavit_sa(self):
        print(f"Som zivocich s menom {self.meno} a vekom {self.vek} rokov.")

# Podtrieda (Subclass)
class Pes(Zivocich):
    def __init__(self, meno, vek, plemeno):
        # Volanie konštruktora nadtriedy
        super().__init__(meno, vek)
        self.plemeno = plemeno

    def zvuk(self):
        print("Haf! Haf!")

# Podtrieda (Subclass)
class Macka(Zivocich):
    def __init__(self, meno, vek, farba):
        # Volanie konštruktora nadtriedy
        super().__init__(meno, vek)
        self.farba = farba

    def zvuk(self):
        print("Mňau! Mňau!")

# Vytvorenie inštancií podtried
pes1 = Pes("Rex", 3, "Nemecký ovčiak")
macka1 = Macka("Micka", 2, "čierna")

# Volanie metód nadtriedy a podtried
pes1.predstavit_sa()
pes1.zvuk()

macka1.predstavit_sa()
macka1.zvuk()
 
Odpovědět
+2
11.10.2023 21:10
Avatar
Daniel Zábojník:16.10.2023 17:25

Děkujeme za vaše podněty. Lekci jsme aktualizovali :-)

 
Odpovědět
16.10.2023 17:25
Avatar
Jakub Ježek
Člen
Avatar
Jakub Ježek:17.12.2023 0:09

píšu v diskuzi. a kvůli nutným 50 znakům znovu - píšu v diskuzi

 
Odpovědět
17.12.2023 0:09
Avatar
Jakub Ježek
Člen
Avatar
Jakub Ježek:17.12.2023 0:17

*V potomkovi nebudou přístupné privátní atributy rodiče (označené dvojitým podtržítkem). přístupné budou pouze veřejné atributy a metody. Privátní atributy a metody jsou chápány jako speciální logika konkrétní třídy, která je potomkovi utajena. I když ji vlastně používá, nemůže ji měnit. *

Třikrát řeknete, že privátní atributy jsou potomkovi nepřístupné, abyste nakonec řekli, že je používá. Co z toho si tak jako má člověk odnést?

 
Odpovědět
17.12.2023 0:17
Avatar
Odpovídá na Jakub Ježek
Dušan Kovářík:14.1.2024 22:40

Třeba můžeš mít privátní proměnnou v rodičovské třídě, ke které potomek sice nemá přístup, ale tuto proměnnou používá metoda, která z potomka přístupná je. Například něco na tento způsob:

class Rodic:

    __odpoved = 42  # Jsem privátní proměnná rodičovské třídy,
                    # potomek ke mně nemá přístup.
    def _vrat_odpoved(self):   # Ale já s privátní proměnnou pracuji,
        return self.__odpoved  # a můžu být volána z potomka.

class Potomek(Rodic):
    def vypis_odpoved(self):
        # print(__odpoved) # nefunguje!
        print(f"Smysl života, vesmíru a tak vůbec je {self._vrat_odpoved()}")

instance = Potomek()
instance.vypis_odpoved()
Editováno 14.1.2024 22:41
 
Odpovědět
+6
14.1.2024 22:40
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 22.