HALLOWEEN JE TADY: Získej 66 % extra kreditů zdarma při nákupu od 1199 kreditů s promo kódem NEBOJSEIT66. Zjisti více:
NOVINKA: Začni v IT jako webmaster s komplexním akreditovaným online kurzem Tvůrce WWW stránek. Zjisti více:

Diskuze – Lekce 2 - První objektová aplikace v Pythonu - Hello object world

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
Robert Karaba:25. března 9:39

nezrozumitelne, nelogicke, a nasledujuce priklady nato nenadvezuju

 
Odpovědět
25. března 9:39
Avatar
Veronika Viková:9. dubna 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.

 
Odpovědět
9. dubna 19:20
Avatar
Marek Havlata:13. dubna 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í.

 
Odpovědět
13. dubna 11:09
Avatar
Jakub Janáček:13. dubna 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.
 
Odpovědět
13. dubna 21:13
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Jakub Janáček
DarkCoder:13. dubna 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
Odpovědět
13. dubna 21:38
"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. května 13:06

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

 
Odpovědět
17. května 13:06
Avatar
Anton Chudjak:18. června 17:21

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

 
Odpovědět
18. června 17:21
Avatar
Odpovídá na DarkCoder
josef čáslava:22. srpna 15:10

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

 
Odpovědět
22. srpna 15:10
Avatar
DarkCoder
Člen
Avatar
Odpovídá na josef čáslava
DarkCoder:22. srpna 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!

Odpovědět
22. srpna 19:32
"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. srpna 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í.

Odpovědět
28. srpna 13:01
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
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 93.