Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Diskusia – 13. diel - Statika v Pythone druhýkrát - Statické a triedne metódy

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
Avatar
Dušan Kovářík:15. januára 23:53

Statické metody jsou mi jasné, ale u třídních bych uvítal příklad s vyšší mírou názornosti ukazující, k čemu jsou užitečné. Přiklady v lekci mi prostě přijdou moc "zamotané dohromady" :(

 
Odpovedať
15. januára 23:53
Avatar
Lucie Králová:3. mája 0:38

Z této lekce mám v hlavě guláš :D Snad si to sedne časem.

 
Odpovedať
3. mája 0:38
Avatar
Pavel Puda
Člen
Avatar
Pavel Puda:17. júna 10:32

Některá tvrzení v tomto článku jsou dle mého názoru přinejmenším nepřesná. Např. v reálném příkladu je uvedeno:
@staticmethod
def zvaliduj_heslo(hes­lo):
if len(heslo) >= Uzivatel.mini­malni_delka_hes­la: # metoda přistupuje k třídnímu atributu přes název třídy, ne instance.

a o pár řádků níž je:
Statickou metodu tedy použijeme, když metoda nevyžaduje přístup k žádným atributům nebo metodám třídy.

 
Odpovedať
17. júna 10:32
Avatar
Peter Dibdiak:30. augusta 15:49

stratil som sa. Celé som si to prečítal niekoľko krát a mám pocit, že tomu rozumiem tak na 10%.
Zatiaľ prvý krát od začiatku kurzu čo som článku takmer vôbec neporozumel

 
Odpovedať
30. augusta 15:49
Avatar
Jiří Suder
Člen
Avatar
Jiří Suder:8. septembra 22:48

Ahoj, taky jsme v tom plaval, ale pak jsem našel: V Pythonu jsou @classmethod a @staticmethod dva typy metod, které se používají pro různé účely ve třídách. Hlavní rozdíly mezi nimi spočívají v tom, jaký druh dat mají přístup a jak jsou vázány k třídě.
@classmethod

@classmethod musí mít jako první parametr referenci cls, což je odkaz na třídu, nikoli na instanci třídy.
Tato metoda může měnit stav třídy, což ovlivní všechny instance této třídy.
Může také volat další třídní metody nebo přistupovat k třídním atributům.

@staticmethod

@staticmethod se chová více jako běžná funkce, která je umístěna v definici třídy. Nemá přístup ani k cls (třídní referenci), ani k self (instanci třídy).
Nemůže měnit stav třídy ani instancí, protože nemá přístup k jejich atributům.
Je užitečná, pokud potřebujete funkci, která souvisí s třídou, ale nezávisí na konkrétní instanci nebo třídě.

 
Odpovedať
8. septembra 22:48
Avatar
Jiří Suder
Člen
Avatar
Odpovedá na Jiří Suder
Jiří Suder:8. septembra 22:52

Jen ještě dodám, že obě @classmethod i @staticmethod může být volána na úrovni třídy, což znamená, že není nutné vytvářet instanci třídy, aby bylo možné metodu použít.

Editované 8. septembra 22:53
 
Odpovedať
8. septembra 22:52
Avatar
Adam Černý
Člen
Avatar
Odpovedá na Pavel Puda
Adam Černý:23. novembra 17:11

Bude není správně ukázkový kód, nebo není tvrzení .... "Statickou metodu tedy použijeme, když: * metoda nevyžaduje přístup k žádným atributům nebo metodám třídy ... " pravdivé. V ukázce je v třídě Uzivatel atribut třídy minimalni_del­ka_hesla = 6, a k tomuto atribuju třídy přistupuje @staticmethod zvaliduj heslo. Lekce je tak matoucí a opět je potřeba odejít z lekce studovat problematiku bez zavádějících ukázek a udělat si v tom jasno z jiných zdrojů.

 
Odpovedať
23. novembra 17:11
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.

Zatiaľ nikto nevložil komentár - buď prvý!