Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. 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.1.2024 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ť
+4
15.1.2024 23:53
Avatar
Lucie Králová:3.5.2024 0:38

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

 
Odpovedať
+2
3.5.2024 0:38
Avatar
Pavel Puda
Člen
Avatar
Pavel Puda:17.6.2024 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ť
+2
17.6.2024 10:32
Avatar
Peter Dibdiak:30.8.2024 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.8.2024 15:49
Avatar
Jiří Suder
Člen
Avatar
Jiří Suder:8.9.2024 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ť
+2
8.9.2024 22:48
Avatar
Jiří Suder
Člen
Avatar
Odpovedá na Jiří Suder
Jiří Suder:8.9.2024 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.9.2024 22:53
 
Odpovedať
+1
8.9.2024 22:52
Avatar
Adam Černý
Člen
Avatar
Odpovedá na Pavel Puda
Adam Černý:23.11.2024 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.11.2024 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.

Zobrazené 7 správy z 7.