IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Jakub novak
Člen
Avatar
Jakub novak:4.12.2020 22:09

zdravim zdejsi pythonaky.Ucim se python a nejde mi pochopit kod ktery tady je na tutorialu.
jedna se o :class Uzivatel():

def __init__(self, jmeno, vek, registrovan):
self.jmeno = jmeno
self.vek = vek
self.registrovan = registrovan

def __str__(self):
return self.jmeno

class Databaze():

uzivatele = []

def __init__(self, soubor):
pass

def pridejUzivate­le(self, jmeno, vek, registrovan):
pass

def vratVsechny(self):
pass

def uloz(self):
pass

def nacti(self):
pass

def pridejUzivate­le(self, jmeno, vek, registrovan):
u = Uzivatel(jmeno, vek, registrovan)
self.uzivatele­.append(u)

konkretne mi jde o vysvetleni def pridejUzivatele() proc je vytvorena instance "u", a proc je u uzivatele self. Dekuji

odkaz na tutorial je https://www.itnetwork.cz/…sv-v-pythonu

Zkusil jsem: zkusil sem hledat na netu ale problem je v konkretizaci otazky. takze mi nezbyva nez se zeptat tady

Chci docílit: resim protoe chci chapat abych se odkazoval v budoucnu na sebe a ne na rady. diky

 
Odpovědět
4.12.2020 22:09
Avatar
Pavel
Člen
Avatar
Pavel:5.12.2020 11:37
def pridejUzivatele(self, jmeno, vek, registrovan):
    u = Uzivatel(jmeno, vek, registrovan)   # vytvori instanci tridy Uzivatel se zadanym jmenem a datem
    #  self je v pythonu zpusob jak se odkazovat na instanci tridy, ke ktere ta promenna uzivatel patri, tj. instance tridy Databaze
    self.uzivatele.append(u)

Pouziti toho kodu bude zrejme takove:

db =  Databaze()
db.pridejUzivatele('Jan', 'Novak', 'nejaky datum')

Jinak takovy detail smerem k tvurci tutorialu, dle stylistickych pravidel pythonu by se funkce, metody a promenne mely psat malymi pismeny se slovy oddelenymi podtrzitkem.

 
Nahoru Odpovědět
5.12.2020 11:37
Avatar
Jakub novak
Člen
Avatar
Odpovídá na Pavel
Jakub novak:5.12.2020 13:10

Dekuji za ochotu vysvetlit ale proc se musi vytvorit trida Uzivatel. Proc by nemohli tyhle atriuity byt(vek, jmeno, registeovan) primo ve tride databaze tohle mi neni jasny. Proc se proste musela vytvorit trida Uzivatel. Dekuji

 
Nahoru Odpovědět
5.12.2020 13:10
Avatar
Pavel
Člen
Avatar
Odpovídá na Jakub novak
Pavel:5.12.2020 13:24

Teoreticky by sis mohl mit v ramci databaze misto seznamu objektu, seznam slovniku, seznam seznamu, apod.

def pridejUzivatele(self, jmeno, vek, registrovan):
    self.uzivatele.append({'jmeno': jmeno, 'vek':vek, 'registrovan': registrovan})

Ale pokud bys chtel mit treba pro uzivatele definovane nejake metody, jako treba tady je predefinovana metoda __str__, ktera rika jak bude vypadat vystup, kdyz pouzijes pro instanci u prikaz print(u), tak je objektovy pristup prehlednejsi.

 
Nahoru Odpovědět
5.12.2020 13:24
Avatar
Pavel
Člen
Avatar
Pavel:5.12.2020 13:42

Jinak u backendovych frameworku jako je Django nebo Flask, mas nekde databazi, ke ktery se pripojis. Ten objekt, ktery to pripojeni zprostredkovava ma sve metody na pridavani, mazani, upravovani veci v databazi. Ty mas napr. nadefinovane tridy Uzivatel (pro uzivatelsky ucet), Post (pro prispevky).Tyto tridy maji nejake svoje atributy, ktere se pak pres to spojeni s databazi definovanym zpusobem prenaseji do samotne databaze.
Je proto asi vhodne ucit se to nejakym prakticky pouzivanym zpusobem, i kdyz existuje spousta jinych moznosti.

 
Nahoru Odpovědět
5.12.2020 13:42
Avatar
Jakub novak
Člen
Avatar
Jakub novak:5.12.2020 19:24

Pavle diky za vysvetlebi do jiste miry si mi to vysvetlil a spis potvrdil. Ale porad jeste chyby vysvetleni proc se musela vytvorit trida Uzivatel() protpze kdyz udelam instanci tridy Uzivatel dejme tomu a =Uzivatel(argu­menty) tak se do databaze neprida. Vytvori se pouze objekt neboki instance trida Uzivatel. Jesze jinak se zeptat proc je napred vytvorena trida Uzivatel a pak je pouzita v databazi

Editováno 5.12.2020 19:26
 
Nahoru Odpovědět
5.12.2020 19:24
Avatar
Pavel
Člen
Avatar
Pavel:5.12.2020 20:27

Predstav si to jako v realnym svete, nejdriv vytvoris formular (definice tridy), pak ho vyplnis (instance tridy, objekt) a pak ho zalozis do kartoteky (databaze).
Dokud nevis jak ma trida vypada, nemuzes ji instancovat, dokud ji neinstancujes, nemuzes ji vlozit do databaze.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
5.12.2020 20:27
Avatar
Jakub novak
Člen
Avatar
Jakub novak:5.12.2020 20:41

Diky konecne :) davam fajku dekuji Pavle

 
Nahoru Odpovědět
5.12.2020 20:41
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 8 zpráv z 8.