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 – 3. diel - Atribúty a metódy 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
DarkCoder
Člen
Avatar
DarkCoder:8. novembra 22:47

Pokud nevysvětlíte rozdíl mezi třídním atributem a instančním atributem, bude výklad nejasný. Popis kódu v odstavci Atributy Třídy je částečně neúplný, místy chybný a matoucí.

To co je zásadní je přístup k atributu. Pokud instanční atribut neexistuje, hledá se mezi třídními atributy. Tato stěžejní informace vám v článku chybí a riskujete tak to, že čtenář neporozumí tomu co se tam skutečně děje.

Jelikož instancí zdraviče můžeme vytvořit kolik chceme, přístup k atributu přes self.text zajistí, že se text vezme z té instance, na které je metoda zavolána.

To neplatí pokud instanční atribut neexistuje. A pokud neexistuje, vezme si hodnotu z třídního atributu (pokud existuje).

Pokud nebudeme pouštět do hloubky, mohl by kód vypadat takto:

class Zdravic:
    text = "Ahoj"
    def pozdrav(self, jmeno):
        print(f"{self.text} {jmeno}")

zdravic = Zdravic()
zdravic.pozdrav("Karel")
zdravic.pozdrav("Petr")

Tím zajistíme, že bude existovat vždy nějaký pozdrav, i když žádný text instanci nepřiřadíme. Pokud nějaký text přiřadíme instanci před voláním metody pozdrav(), pak se tato hodnota textu vezme z instančního atributu.

Aby se vidělo, co se tam děje, zde je příklad který tuto techniku ukazuje a zároveň ukazuje, jaké atributy si instance a třída uchovává.

class Zdravic:
    # Atribut třídy
    text = "Ahoj z TŘÍDY"

    def pozdrav(self, jmeno):
        # Zde používáme self.text, ale žádný atribut text v instanci zatím není
        print(f"{self.text} {jmeno}")


# Vytvoříme instanci
z = Zdravic()

# 🔍 Podívejme se, že instance nemá vlastní atributy
print("Atributy instance před voláním:", z.__dict__)

# Zavoláme metodu – používá se třídní atribut
z.pozdrav("Karel")

# Nyní vytvoříme atribut instance
z.text = "Ahoj z INSTANCE"

print("Atributy instance po vytvoření vlastního textu:", z.__dict__)

# Teď už self.text ukazuje na atribut instance
z.pozdrav("Petr")

# A přístup ke třídnímu atributu stále funguje přes třídu
print("Třídní atribut:", Zdravic.text)

Upravte a doplňte si to v článku!

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Toby Damian Wehle:10. novembra 6:19

Díky za přehlednou lekci :)

Avatar
Jan Kupčík
Člen
Avatar
Jan Kupčík:20. novembra 11:42

Upozorňuji na drobnou chybu v textu - "akýkoli kód v těle
metody po příkazu return se již neprovede!"

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é 3 správy z 13.