Python trida – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Python trida – Python – Fórum – Programujte.comPython trida – Python – Fórum – Programujte.com

 

shockwave0
Newbie
31. 3. 2020   #1
-
0
-

Ahoj, chtel bych se optat ctu tady v ucebnici  Python all in one for dummies , ze metoda je vzdy spjata s tridou class. Ta metoda je propojena pres self ?  Takže pokud bude v souboru vicero trid class , tak kazdou konkretni tridu class propojim s jeji metodou pres to self ?

A druhy dotaz probiraji tady Passing parameter to method:

# Method to activate (True) or deactivate (False) account.
def activate(self, yesno):
""" True for active, False to make inactive """
self.is_active = yesno

Připojen obrázek.

Omlouvam se, za vlozeni obrazku, nemel jsem cas opisovat kod, nicmene, kod  metody def activate() výše je zaclenen v tomto obrazku. Jen me zaskocilo self.is_active = yesno, to yesno je tady jen aby v metode neco bylo a pozdeji to zmeni na False nebo vubec nechapu, proc to resi takto silene. Dekuji  moc za vysvetleni

Nahlásit jako SPAM
IP: 212.4.155.–
gna
~ Anonymní uživatel
1891 příspěvků
31. 3. 2020   #2
-
0
-

První parametr metod je objekt (instance třídy), na kterém tu metodu voláš. Doplňuje se automaticky a je zvykem ho pojmenovávat self

class Trida:
    def neco(self):
        pass

a = Trida()
b = Trida()

a.neco()  # Trida.neco(a)
          # --> self = a

b.neco()  # Trida.neco(b)
          # --> self = b

V tom activate není yesno, aby tam něco bylo, ale prostě ta metoda přijímá další parametr pojmenovaný yesno a při zavolání uloží jeho hodnotu  do self.is_active.

new_guy.activate(False)  # Member.activate(new_guy, False)
                         # --> self = new_guy, yesno = False
                         # --> new_guy.is_active = False

Tvůj zápal je obdivuhodný, ale připadá mi, že hodně čteš a málo zkoušíš, takže ti pořád unikají i triviální věci, které jsi prošel už stokrát.

Nahlásit jako SPAM
IP: 213.211.51.–
shockwave0
Newbie
31. 3. 2020   #3
-
0
-

#2 gna
Ahoj, aju super, děkuji moc. No já spíš někdy plavu v té lirární gramatice a ne vždy mi to z učebnic v originále dojde.

V tomle případe jsem si to zkousel nakodovat, ale chtel jsem si radeji overit od profíka , jestli je to yesno = parametr volaný. 

K te druhe veci, co když se sejde více tříd class v jednom souboru, jak pak zavolat methodu např. jen druhé třídy, tam pak bude lepší nedávat self , pokud je self už u třídy jedna , ale jiné slovo, že? Podotýkám, na tohle jsem ještě nikde nenarazil. Nebo dát do jednoho  souboru jen jednu třídu? 

Děkuji ještě jednou za trpělivost

Nahlásit jako SPAM
IP: 212.4.155.–
gna
~ Anonymní uživatel
1891 příspěvků
1. 4. 2020   #4
-
0
-

Nevím, co přesně tím myslíš.

Python "ví" jakého typu je ten objekt a zavolá správnou metodu sám.

class TridaA:
    def neco(self):
        pass

class TridaB:
    def neco(self):
        pass

a = TridaA()
b = TridaA()
c = TridaB()

a.neco()  # TridaA.neco(a)
b.neco()  # TridaA.neco(b)
c.neco()  # TridaB.neco(c)

A názvy parametrů ve funkcích/metodách jsou čistě lokální názvy v té jediné funkci, aby s těmi parametry šlo nějak pracovat. Nemusíš řešit nějakou kolizi názvů.

def secti(a, b):
    return a + b

def odecti(a, b):
    # parametry `a` a `b`
    # nemají nic společného s parametry v `secti`
    # ani s globální proměnnými `a` a `b`
    return a - b

a = 1
b = 2
c = secti(3, 4)   # v secti bude a=3, b=4
d = secti(5, 6)   # v secti bude a=5, b=6
e = odecti(7, 8)  # v odecti bude a=7, b=8
# na našich proměnných `a` a `b` se nic nezměnilo
Nahlásit jako SPAM
IP: 213.211.51.–
Jerry
~ Anonymní uživatel
512 příspěvků
1. 4. 2020   #5
-
0
-

#1 shockwave
tý jo on má python objektový programování jo ? woooooooooou tý jo njn pokrok nezastavíš no...

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:e485:bff8:96e0:6a56...–
KIIV
~ Moderátor
+43
God of flame
1. 4. 2020   #6
-
0
-

#5 Jerry
To ma uz dlouho, ale je to stejne kretensky reseny jako v perlu. Nakonec pulka trid ma jen konstruktor a jednu metodu - co kdyby to nahodou nekdo za 10000let chtel opravdu rozsirit na opravdovou tridu :D

Nahlásit jako SPAM
IP: 78.80.21.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kit+15
Guru
1. 4. 2020   #7
-
0
-

#6 KIIV
Čemu říkáš "opravdová třída"? Pokud to má víc než 100 řádek, tak je to u mne paskvil.

Nahlásit jako SPAM
IP: 46.135.26.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
KIIV
~ Moderátor
+43
God of flame
1. 4. 2020   #8
-
0
-

#7 Kit

Ty zmineny radoby tridy jsou popsany tady: https://youtu.be/o9pEzgHorH0?t=130 je to tam popsane jako obfuskace volani funkce. Osobne python nenavidim, ale prednaska je obecne zajimava i pro jine jazyky :)

Kazdopadne kazdy nekdy zacne necim idealne "cistym" a pak z toho tak jak tak vypadne paskvil

Nahlásit jako SPAM
IP: 78.80.21.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kit+15
Guru
2. 4. 2020   #9
-
0
-

#8 KIIV
Tohle video znám a souhlasím s tím. Pojmenoval bych ho spíš "Stop Writing Stupid Classes". Týká se to všech objektových jazyků, ale u Pythonu, který je multiparadigmatický, je to vidět asi nejlépe.

Běžně se tomu říká overingeneering. Když se mi do rukou dostane nějaký projekt, tak ho obvykle zkrátím o třetinu už při prvním čtení. Někdo stále ještě žije v době, kdy se programy platily podle počtu řádek. Programovat objektově znamená pro mne, že ty programy nejsou delší a pomalejší, ale naopak kratší, rychlejší a robustnější, než kdyby to bylo napsáno špagetově.

Nahlásit jako SPAM
IP: 94.112.251.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 26 hostů

Podobná vlákna

Python-zavirani oken v python shell — založil Daniel zita

2x trida — založil Roman

Sablonova trida — založil Hertas

Class ( třída ) — založil milanmichal

Třída OOP — založil Tomáš Havlíček

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý