Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 11. diel - Dedičnosť a polymorfizmus v Pythone

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
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.

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

Odpovedať
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.

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

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()}")
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()
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

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?

Avatar
Odpovedá 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()
Editované
Avatar
Karel Knaifl
Člen
Avatar
Karel Knaifl:18.5.2024 20:38

Je to podruhé, co má autor článku ve vzorovém scriptu chybu. Zde drobná úprava
x = [1, 2, 3] # Definice proměnné x jako seznamu
y = "Hello" # Definice proměnné y jako řetězce

if type(x) == list:
print("x je seznam") # Výstup: x je seznam

if type(y) == str:
print("y je řetězec") # Výstup: y je řetězec

a = 10
print(type(a) == int) # Výstup: True

print(type(y) == int) # Výstup: False

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 22.