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 – 2. diel - Prvá objektová aplikácia v Pythone - Hello object world

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
Robert Karaba:25. marca 9:39

nezrozumitelne, nelogicke, a nasledujuce priklady nato nenadvezuju

Avatar
Veronika Viková:9. apríla 19:20

help() mi vůbec nefungovalo :-(, někde je chyba, ale kde? Úkol jsem vzdala jen jsem si zadání přečetla. Vůbec nevím co dělat. Sotva jsem pobrala, co je tu napsané, ale použít to tedy neumím. Můžu koukat na ukázku a na kalkulačku - ale jak to předělat :-/. Chtělo by to něco jednoduššího pro nás laiky.

Avatar
Marek Havlata:13. apríla 11:09

OK, ale některé části by mohly být vysvětleny lépe – hlavně parametr self a jeho význam v praxi. Příklady ok, ale člověk s nulovými znalostmi OOP úplně hned nepochopí a zasekne se. Text je místy moc teoretický a mohl by být stručnější a více zaměřený na praktičnost. I když jsem se snažil pochopit úvod tady, tak nic. Z třídy Zdravic mi jde hlava kolem a musel jsem se obrátit na jiné zdroje, které mi to objasnily. Ukazoval jsem kolegovi programátorovi, taky mu to přišlo pro začátečníka matoucí.

Avatar
Jakub Janáček:13. apríla 21:13

"Do něj se vloží "odkaz" na objekt, do kterého metoda náleží.
Tento argument tam vloží sám objekt."

  • Šlo by zkonkretizovat slova zmíněná v této kapitole tak, aby byly myšleny konkrétněji s právě jasnou návazností? Dle mého subjektivního názoru může vzniknout domněnková misinterpretace.
Avatar
DarkCoder
Člen
Avatar
Odpovedá na Jakub Janáček
DarkCoder:13. apríla 21:38

Podívej se na následující program. Z komentářů pochopíš co se tím myslí.

# Definice třídy Pes
class Pes:
    # Metoda __init__ se volá při vytváření instance (konstruktor)
    # 'self' zde reprezentuje právě vytvářený objekt
    def __init__(self, jmeno, vek):
        self.jmeno = jmeno  # Uloží jméno do atributu tohoto konkrétního psa
        self.vek = vek      # Uloží věk do atributu tohoto konkrétního psa
        print(f"Vytvořen pes {self.jmeno}, věk {self.vek} let")

    # Metoda instance - self vždy odkazuje na objekt, na kterém se metoda volá
    def stekni(self):
        print(f"{self.jmeno} říká: Haf! Haf! (Je mi {self.vek} let)")

    # Další metoda instance, která mění stav objektu
    def zestarni(self, roky):
        self.vek += roky  # Zvýší věk tohoto konkrétního psa
        print(f"{self.jmeno} zestárl o {roky} let. Teď je mu {self.vek} let.")

# Vytvoření první instance (objektu) třídy Pes
# Python volá Pes.__init__(pes1, "Rex", 3)
pes1 = Pes("Rex", 3)

# Vytvoření druhé instance (objektu) třídy Pes
# Python volá Pes.__init__(pes2, "Alík", 5)
pes2 = Pes("Alík", 5)

print("\nPrvní štěkání:")
# Volání metody - Python transformuje pes1.stekni() na Pes.stekni(pes1)
pes1.stekni()  # self = pes1 (Rex)
pes2.stekni()  # self = pes2 (Alík)

print("\nZestárnutí psů:")
# Změna stavu prvního objektu
pes1.zestarni(2)  # self = pes1, roky = 2
# Změna stavu druhého objektu
pes2.zestarni(1)  # self = pes2, roky = 1

print("\nStav po zestárnutí:")
# Znovu zavoláme stekni() abychom viděli změny
pes1.stekni()  # self = pes1 (Rex) - nyní věk 5 let
pes2.stekni()  # self = pes2 (Alík) - nyní věk 6 let
Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Štěpán Bodnár:17. mája 13:06

Text na stránce je neaktuální vůči text to speech.

Avatar
Anton Chudjak:18. júna 17:21

Veľmi také zmotočné mi to na začiatok príde uvidíme čo bude ďalej

Avatar
Odpovedá na DarkCoder
josef čáslava:22. augusta 15:10

DarkCodere, to je výborné! Měl bys sestavit vlastní příručku!

Avatar
DarkCoder
Člen
Avatar
Odpovedá na josef čáslava
DarkCoder:22. augusta 19:32

Díky Josefe, beru to jako kompliment. Nicméně na příručku bych to neviděl, nejsem expertem na Python. Ale fajn vnímat to, že to bylo tobě i ostatním čtenářům ku prospěchu!

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
DarkCoder
Člen
Avatar
DarkCoder:28. augusta 13:01

Pro všechny, kteří chtějí porozumět klíčovému slovu self – k čemu slouží a proč se v Pythonu používá.

Klíčové slovo self se v Pythonu používá uvnitř tříd jako odkaz na aktuální instanci objektu. Pomocí self můžeme přistupovat k atributům a metodám objektu uvnitř třídy.

Když vytváříme objekt nějaké třídy, každý objekt má své vlastní proměnné (tzv. atributy). Pomocí self můžeme uvnitř metod říct, že pracujeme právě s těmito konkrétními proměnnými patřícími danému objektu.

Příklad:

class Osoba:
    def __init__(self, jmeno):
        self.jmeno = jmeno  # 'self.jmeno' je atribut objektu, 'jmeno' je parametr

    def pozdrav(self):
        print("Ahoj, jmenuji se", self.jmeno)

# Vytvoření objektu
osoba1 = Osoba("Anna")
osoba1.pozdrav()  # Výstup: Ahoj, jmenuji se Anna

Vysvětlení:

__init__ je konstruktor, který se zavolá při vytvoření nové instance (objektu).

self.jmeno = jmeno uloží hodnotu z parametru jmeno do atributu self.jmeno, který bude specifický pro daný objekt.

Když voláme osoba1.pozdrav(), metoda použije self.jmeno, což znamená osoba1.jmeno.

Shrnutí:

self je odkaz na aktuální objekt.

Používá se k přístupu k atributům a dalším metodám uvnitř třídy.

Při volání metody se self předává automaticky, ale v definici metody ho musíme vždy uvést jako první parametr (pokud to není statická metoda).

Bližší rozbor:

V Pythonu, když pracujeme uvnitř třídy s tzv. instančními atributy (tj. vlastnostmi, které patří konkrétní instanci), musíme vědět, ke které instanci se vztahují. A právě k tomu slouží parametr self.

Například:

osoba1.pozdrav()

Python ve skutečnosti přeloží tento zápis jako:

Osoba.pozdrav(osoba1)

Jinými slovy, Python automaticky předá odkaz na objekt jako první argument metodě, a v definici metody ho přijímáme pod jménem self.

Co by se stalo bez self?

Bez self bychom neměli žádný způsob, jak se uvnitř metody dostat k atributům konkrétního objektu – protože Python nám jinak neřekne, o jaký objekt se jedná.

K zapamatování:

self je nutný pro přístup k datům konkrétní instance.

Bez něj bychom neměli přehled, s jakým objektem metoda pracuje.

Vždy ho musíme uvádět jako první parametr každé běžné (instanční) metody v třídě.

Výjimkou jsou statické metody, které se k žádné instanci nevztahují – tam se self neuvádí.

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
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 97.