Python programiranje kao hobi

poruka: 170
|
čitano: 57.528
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Python programiranje kao hobi

opet moram gnjaviti (stvarno ima puno toga za pohvatat) ali sad imam pitanje u vezi notepad++. Htio bih da kada napišem kod u notepad++ da ga samo pokrenem da ne moram stalno ponovo tipkat u python. Pokusavao sam preko plugin-a Nppexec i pratio sam guide ali nista. Skripta koju sam upisao ("C:\Programi\Python34\Lib\idlelib\idle.py "$(FULL_CURRENT_PATH") ne radI,Izbaci mi ovakav error(CreateProcess() failed with error code 193: %1 is not a valid Win32 application.

Probao sam s drugim programom (Lua) i cak mi pokrene console ali ne obrađuje kodove. Mislim naravno ne znam tocno kako to sve funkcionira,samo sam pratio guidove koje sam naletio na netu.

 

 
0 0 hvala 0
8 godina
neaktivan
offline
Re: Python programiranje kao hobi
cale kaže...

opet moram gnjaviti (stvarno ima puno toga za pohvatat) ali sad imam pitanje u vezi notepad++. Htio bih da kada napišem kod u notepad++ da ga samo pokrenem da ne moram stalno ponovo tipkat u python. Pokusavao sam preko plugin-a Nppexec i pratio sam guide ali nista. Skripta koju sam upisao ("C:\Programi\Python34\Lib\idlelib\idle.py "$(FULL_CURRENT_PATH") ne radI,Izbaci mi ovakav error(CreateProcess() failed with error code 193: %1 is not a valid Win32 application.

Probao sam s drugim programom (Lua) i cak mi pokrene console ali ne obrađuje kodove. Mislim naravno ne znam tocno kako to sve funkcionira,samo sam pratio guidove koje sam naletio na netu.

 

 Kod mene na Python2.7 ovo radi C:\Python27\python.exe -i "$(FULL_CURRENT_PATH)" - upises u run (f5) - snimi i dodijeli precicu, npr Alt +W

 

Meni je problem sto ovako imam problem sa pronalazenjem fajlova, ako upisem ime fajla koji je u istom direktorijumu, nece da ga pronadje.

 

Tako da ja koristim Python IDLE - za moj kuckanja je i vise nego dovljan, sa f5 izvrsava kod. Svakako je puno prijatniji od win command prompt-a (u kojem i Notepad++ prikazuje rezulate, jos jedan razlog sto ga ne koristim).

8 godina
neaktivan
offline
Re: Python programiranje kao hobi
1domagoj1 kaže...

Nije tesko nauciti kako iskodirati klase i kako s njima raditi, ono teze je nauciti kada i kako ih upotrebljavati. Nazalost, tu nema nekog jednostavnog objasnjenja. Za pocetak moras se upoznati s pojmovima enkapsulacija, nasljedivanje, polimorfizam i apstrakcija (ima i drugih). Te pojmove dalo bi se svesti u sljedecu recenicu: kod objektno orijentiranog programiranja radi se o grupiranju podataka s funkcijama (enkapsulacija) koje manipuliraju tim podacima, ali tako da skrivaju nacin na koji rade ispod haube (apstrakcija). Ponasanje onda mozes mijenjati, tj. nadogradivati nasljedivanjem.

 

 

Poliformizam je tu malo drugacija zvjercica koju je malo teze shvatiti. Doslovno znaci "mijenjanje oblika". U prijevodu, jedan tip objekta moze se predstavljati kao drugi. Npr., imas klasu Zivotinja iz koje imas izvedene klase Macka i Pas. Polimorfizam ti omogucuje da radis i s objektima klase Macka i objektima klase Pas pod istim zajednickim nazivnikom. Npr., imas metodu govori() u klasi Zivotinja i pozoves ju nad bilo kojom izvedenom klasom, odgovor koji ces dobit bude adekvatan toj klasi. Znaci ako pozoves metodu nad objektom tipa Macka dobit ces "mijau", a ako pozoves nad objektom tipa Pas, dobit ces "vau". Sve to bez da imas posebne metode "govori_macka()" ili "govori_pas()". Mislim da ti sad nakon ovoga nije nista jasno XD, najlakse bi mi to bilo pokazati na primjeru C++-a ako zelis.

 

EDIT: S tim da bi se jezik zvao objektno orijentiranim, potrebno je da podrzava enkapsulaciju, nasljedivanje i polimorfizam (sto Python sve podrzava). Apstrakcija nije toliko nuzna i Python za razliku od drugih jezika nema implicitno podrzanu apstrakciju. Kako je rekao Guido van Rossum (tvorac Pythona) "we are all adults here" misleci pritom da smo dovoljno zreli i pametni da kao programeri necemo dopustati da jedni objekti kopaju po podacima drugih objekata (to apstrakcija pokusava sprijeciti jer skriva sto se radi ispod haube pojedinog objekta). Objekti medusobno suraduju (i trebaju suradivati) jedino preko predefiniranog javnog sucelja.

Kapiram dobardio onoga sto si napisao, bar ono sto sam vec radio (bar mislim da kapiram).

 

Da li je primjer sa mackom i psom slican ovome, ja sam pisao skriptu za vjezbu u kojoj se nasljedjuju osobine, pa sam napravio klasu Osobu, kao glavnu klasu, a zanimanja kao izvedene klase sa svojim dodatnim atributima.

 

Tako da npr objekat1.zanimanje() vraca odredjeno zanimanje, zavisno od "pod klase" (ili izvedene klase) u kojoj se nalazi - na primjer "gradjevinac", a objekat2.zanimanje() vraca "arhitekta" - pored svojih klasa, oba objekta se nalaze i u glavnoj klasi Osobe. (Mogao bi vratiti i zvuk umjesto zanimanja :))

Tako ja mogu imati nekoliko objekata koji imaju razlicita zanimanja i dodavati im osobine (preko funkcija koje mijenjaju podatke), svakom zasebno u njegovoj bransi, stim da dijele osnovne podatke iz klase Osobe. Svi imaju atribut zanimanje, ali samo Muzicar ima 'instrument' u svojoj klasi i sl.

 

Nisam siguran kako bih ovo mogao uraditi sa funkcijama, tj. da radim sa nekoliko objekata u isto vrijeme.

 

 

Sad pokusavam iskoriti klase za manipulaciju knjigama (u txt fajlovima) - tj. rad sa nekoliko knjiga (objekata) u isto vrijeme, tipa isprintaj prvih toliko linija za objekat1 (objekat1.printFirstLines(50), saznaj nacescu rijec za objekat2 (objekat2.findWordNumber('morning'), presnimi dijelove knjige u drugi txt fajl i sl.

Sve te funkcije sam vec napisao, ali ih sada zelim objediniti pod klasama.

 

Trudim se da shvatim prednosti klasa.

 

U svakom slucaju, sve ovo je zanimljivo. (i jedva cekam svoj raspberry Pi)

16 godina
neaktivan
offline
Re: Python programiranje kao hobi

Tako je, dobro si to primjetio sa zanimanjima i osobama.

 

Bitno je samo da sad u pocetku pohvatas te osnovne pojmove (enkapsulacija, nasljedivanje, polimorfizam i apstrakcija). Kad si dovoljno upoznat s njima i siguran, mozes prijeci na iducu razinu, gdje bi ti onda trebalo postati prilicno jasno pitanje "zasto objektno orijentirano programiranje". Govorim dakako, o oblikovnim obrascima u programiranju. Iako, uvijek moras imati i na umu da OOP nije alfa i omega. Da, najkorisnije je i najvise se koristi, ali nije nuzno uvijek i najbolji izbor. Nekad je jednostavno dovoljno obicno proceduralno programiranje.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
15 godina
neaktivan
offline
Python programiranje kao hobi

def process_file(filename,order=2):

fp=open(filename)

skip_gutenberg_header(fp)

for line in fp:

print(line)

 

def skip_gutenberg_header(fp):

for line in fp:

if line.startswith("END"):

             break

 

Nije mi jasno kako u funkciji process_file on printa sve linije poslije linije koja sadržava "END". Na koji način su se ove dvije funkcije povezale.

Ovo je primjer s ove stranice:
http://greenteapress.com/thinkpython/code/markov.py

 

 
0 0 hvala 0
11 godina
neaktivan
offline
Re: Python programiranje kao hobi

Rezultat funkcije open je file object koji pamti svoju trenutnu poziciju. Čitanje retka pomiče trenutnu poziciju na početak slijedećeg retka.

 

Zbog ovoga drugi for (onaj u funkciji process_file) nastavlja tamo gdje je prvi for (onaj u funkciji skip_gutenberg_header) stao.

15 godina
neaktivan
offline
Python programiranje kao hobi

ako sam dobro shvatio, razlog je taj file sam po sebi? Što znaci da je umjesto file,bila lista [1,2,3,4,5] koja bi u funkciji gutenberg dosla do 3 a onda se u prvo funkciji nastavila od 3 (recimo npr.ispisivati te brojeve iz liste)

 
0 0 hvala 0
11 godina
neaktivan
offline
Re: Python programiranje kao hobi

Program će ispisati cijelu listu [1,2,3,4,5] jer lista (za razliku od TextIOWrappera kojeg ti vrati open) prilikom iteriranja uvijek kreće ispočetka, npr:

 

def process_file(filename, order=2):
    fp = ['1', '2', 'END3', '4', '5']
    skip_gutenberg_header(fp)
    for line in fp:
        print(line)

def skip_gutenberg_header(fp):
    for line in fp:
        if line.startswith("END"):
             break

process_file('')
>>>
1
2
END3
4
5

 

15 godina
neaktivan
offline
Python programiranje kao hobi

Napravio sam "program" koji mjenja neke datoteke,sad me zanima kako napraviti da taj program radi na drugom računalu koje nema instalirano python?

 
0 0 hvala 0
10 godina
neaktivan
offline
Python programiranje kao hobi

Moras prebaciti u .exe, py2exe upravo to radi. 

Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Python programiranje kao hobi

U vezi crtanja grafickih elemenata.Malo sam gledao po netu objasnjenja da probam shvatiti kako to funkcionira. Sad zanima me da li je taj GUI ono sto program drzi na "zivotu" odnosno da se ne prekine sve dok korisnik ne odluci, ili ja moram napisati funkciju koja ce konstantno pozivati ostale funkcije i tako program odrzavati na "zivotu". Nisam mozda najbolje postavio pitanje........ Da li taj GUI kad ga importam i stvorim okvir  da li je on sam taj program koji se odrzava i ceka naredbe koje ce pokrenuti ostale funkcije.

 
0 0 hvala 0
16 godina
neaktivan
offline
Re: Python programiranje kao hobi
cale kaže...

U vezi crtanja grafickih elemenata.Malo sam gledao po netu objasnjenja da probam shvatiti kako to funkcionira. Sad zanima me da li je taj GUI ono sto program drzi na "zivotu" odnosno da se ne prekine sve dok korisnik ne odluci, ili ja moram napisati funkciju koja ce konstantno pozivati ostale funkcije i tako program odrzavati na "zivotu". Nisam mozda najbolje postavio pitanje........ Da li taj GUI kad ga importam i stvorim okvir  da li je on sam taj program koji se odrzava i ceka naredbe koje ce pokrenuti ostale funkcije.

A kud ces vec nakon 2 mjeseca na GUI? xD

 

Da li si upoznat s objektno orijentiranim programiranjem?

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
15 godina
neaktivan
offline
Python programiranje kao hobi

idem po knjizi think python i sad sam dosao na lekciju Tkinter.

Tesko je reci da razumijem toliko dobro da mogu "baratati" pojmovima. Sad sam prolazio klase i objekte iz knjige. Nekako sam shvatio da su klase jedan visi pojam od objekta. Klasa ima jedan cilj a pomocu objekata ce ga ostvariti...tako nekako. Ali u principu mi je sve maglovito.

 
0 0 hvala 0
16 godina
neaktivan
offline
Re: Python programiranje kao hobi
cale kaže...

idem po knjizi think python i sad sam dosao na lekciju Tkinter.

Tesko je reci da razumijem toliko dobro da mogu "baratati" pojmovima. Sad sam prolazio klase i objekte iz knjige. Nekako sam shvatio da su klase jedan visi pojam od objekta. Klasa ima jedan cilj a pomocu objekata ce ga ostvariti...tako nekako. Ali u principu mi je sve maglovito.

Ok, pitam samo jer GUI se u principu temelji na objektno orijentiranom programiranju.

 

No, da adresiram tvoje pitanje, ne znam kako je to s Tkinterom jer ga nikad nisam koristio, oduvijek koristim Qt, tj. PyQt kao njegovu Python inacicu. U PyQt-u bi to izgledalo ovako:

import sys
from PyQt4 import QtGui

def main():
   
    app = QtGui.QApplication(sys.argv)

    w = QtGui.QWidget()
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()
   
   sys.exit(app.exec_())


if __name__ == '__main__':
    main()

 

Ovo podebljano je glavnina svega. Tu se ulazi u glavnu petlju dogadaja (engl. event loop) gdje petlja prima dogadaje od sustava prozora i salje ih dalje widgetima u programu.

Dakle, imas jednu glavnu petlju koja se stalno vrti, a koju ne radis ti, vec se za to brine u ovom slucaju Qt.

 

Kako je tocno kod Tkintera ne znam, ali nesto slicno sigurno.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
11 godina
neaktivan
offline
Re: Python programiranje kao hobi

Ne moraš ništa posebno poduzeti da Tkinter program "održavaš u životu" - poziv metode mainloop top-level widgeta blokira program dok se prozor ne zatvori:

 

from tkinter import *

root = Tk()
Label(root, text="Hello, world!").pack()
root.mainloop()

print('Done')

 

Tekst Done će se ispisati (na konzoli) tek kada zatvoriš prozor.

 

 

Klase u Pythonu su specifične u odnosu na ostale mainstream jezike pa se početnicima savjetuje da dobro prouče funkcije i standardne tipove prije nego se uhvate klasa.

8 godina
neaktivan
offline
Re: Python programiranje kao hobi
cale kaže...

idem po knjizi think python i sad sam dosao na lekciju Tkinter.

Tesko je reci da razumijem toliko dobro da mogu "baratati" pojmovima. Sad sam prolazio klase i objekte iz knjige. Nekako sam shvatio da su klase jedan visi pojam od objekta. Klasa ima jedan cilj a pomocu objekata ce ga ostvariti...tako nekako. Ali u principu mi je sve maglovito.

Ja sam pocetnik, kao i ti, ali ipak zelim da ti objasnim na koji nacin ja posmatram klase.

Gledaj na klase kao na sablone koje koristis da objektu das svojstva. (sablon ili blueprint)


Zamisli da se bavis grcarijom, da pravis objekte od gline, ukrase, posude i sl.

Uzmes komad gline i korak po korak napravis posudu, prstima - i za to ti treba sat vremena - prilicno spor proces koji ti nece donijeti veliku zaradu, mozes napraviti samo nekoliko posuda dnevno, jer svaki put kreces od pocetka. Te posude su tvoji objekti, sa kojima ti radis.

Jedan dan ti sine ideja da napravis kalupe i sebi ubrzas posao -> napravis metalni kalup posude u koji utisnes smjesu i dobijes gotov proizvod, sve za 10min u odnosu na sat ili vise koliko ti je trebalo ranije. Metalni kalup mozes koristi milion puta za milion razlititih posuda, stim da svaka posuda ima iste atribute, sirinu i visinu, izgled rucke, donjeg dijela i sl. - to je sve unaprijed odredjeno kalupom. Kad izvadis posudu iz kalupa mozes da je obojis u zanimljive boje i prodas, vise ne moras da se zezas da oblikovanjem gline i trosis vrijeme.

Taj kalup je klasa, objekat je proizvod od gline, posuda. Ti posudu sada pravis brze nego ranije, kao na pokretnoj traci - samo utisnes glinu. Kada upises kod imeObjekta = mojaKlasa() u tom trenu tvoj objekat ('imeObjekta") poprima svojstva klase, kao sto glina poprima oblik kalupa, i ti onda mozes nastaviti raditi sa oformljenom posudom, odnosno objektom - mozes dalje da ga doradjujes ako to zelis.

Klasa, odosno kalup ti omogucava jos jednu ekstra stvar, modularnost -> na tvom metalnom kalupu ti mozes skinuti klasicnu rucku i dodati spiralnu, ili skinuti gornji dio i zamijeniti ga sa drugacijim dijelom, pa kada utisnes glinu dobijes jos jednu drugaciju posudu - objekat, koji je potekao iz osnovnog kalupa, ali posto si zamijenio rucku ti si sad super brzim procesom dobio novi objekat koji ima drugacija svojstva, "posuda sa spiralnom ruckom" npr.

Ovo dobijas tako sto pravis "podklase", koje sadrze osnovne atribute za izradu posude iz glavne klase, ali i svoje, nove atribute - novi izgled rucke, ili siri gornji dio posude.



Jos jedan primjer, zamisli da imas klasu class plaviKrug() i da si u njoj isprogramirao parametre tog kruga, boju, nacin kretanja po sceni i sl. Ta klasa "plaviKrug" predstavlja sablon za davanje svostava objektu (stvaranje kruga) - "kruznica radijusa 6", "boja plava" i sl. Da bi ga pokrenuo, da bi stvorio krug, ti ces sablonu dodijeliti objekat - povezat ces objekat i klasu, npr.

krug1 = plaviKrug()
test2 = plaviKrug()
x = plaviKrug()

Ovo ce na sceni napraviti tri plava kruga, tri objekta sa nazivima krug1, test2 i x koji imaju ista svojstva. (Naravno, morat ce napraviti random koordinata za pojavljivanje kruga, ili ce se sva tri pojaviti na istom mjestu :)) -> znaci dobio si tri objekta sa istim svojstvima sa kojima mozes jednostavno dalje raditi - mijenjati im boje, oblik, pokretati ih i sl.

Ili mozes napraviti "podklasu" class plaviKvadrat(plaviKrug), koja ce nasljediti svojstva osnovne klase, u njoj neces morati ponovo pisati kompletan kod, vec ces samo izmjeniti parametar "oblika".  rex = plaviKvadrat() => dobijas objekat "rex" koji je predstavljen kao plavi kvadrat



Jednom napisan kod koristis vise puta, i stvaras vise objektata sa istim svojstvima -> to je prednost klasa, onako pojednostavljeno, kako to ja posmatram. Nadam se da zvuci razumiljivo jer je u principu jednostavno. Naravno, kod klase zna izgledati komplikovano, posebno ako je ogroman i ukljucuje biblioteku sa kojom se nisi dobro upoznao...

P.S. ispravio gluposti iznad, kasno je pa kuckam svasta... :)

Poruka je uređivana zadnji put pon 18.4.2016 1:30 (rangoj).
15 godina
neaktivan
offline
Re: Python programiranje kao hobi

Hvala,ak mogu jos sam malo proispitat........te klase su samo metode koje ce mi pomoci da stvorim nesto ako sam dobro razumio......jel onda objekt x=2,mislim jer ja sam to naucio kao varijable i vrijednosti.Varijabla je x,vrijednost je 2 a sve zajedno je to objekt?

8 godina
neaktivan
offline
Re: Python programiranje kao hobi

Koliko ja razumijem:

x postaje objekat u trenutku kada mu je
dodijeljena vrijednost/atribut -> u ovom slucaju 2, (type(x) ce reci integer). Jednako tako promjenjivoj x si mogao dodijeliti i klasu x = plaviKrug(), tada bi objekat x pripadao tvojoj klasi plaviKrug, umjesto klasi integer... type(x) -> instance

Poruka je uređivana zadnji put pon 18.4.2016 1:36 (rangoj).
11 godina
neaktivan
offline
Re: Python programiranje kao hobi

Objekt je broj 2, a x je lokalno ime koje referencira taj objekt. Python nema varijable u klasičnom smislu - rezervirani dio memorije u piše neka vrijednost (ili garbage) unaprijed poznatog tipa. Tip objekta je pridružen samom objektu, a dodjelom vrijednosti stvara se novo ime i veza između imena i konkretnog objekta. U primjeru

 

x = 1
x = 'spam'
x = PlaviKrug()

 

pogrešno je reći "objekt x mijenja tip iz retka u redak". Objekti u gornjem priimjeru su integer 1, string 'spam' i instanca klase PlaviKrug, a x je ime. Varijable su dictionary ime: objekt

 

print(locals())
x = 1
print(locals())
x = 'spam'
print(locals())
del(x)
print(locals())

#Ispis
#{'__doc__': None, '__package__': None, ... , '__name__': '__main__'}
#{'__doc__': None, '__package__': None, ... , '__name__': '__main__', x: 1}
#{'__doc__': None, '__package__': None, ... , '__name__': '__main__', x: 'spam'}
#{'__doc__': None, '__package__': None, ... , '__name__': '__main__'}

 

 

Ono što klase nude je proširenje ovog dictionaryja. Prilikom evaluacije izraza x.atribut Python prvo traži "atribut" u dictionaryju objekta kojeg referencira varijabla x. U slučaju da ga tamo nema pretražuje se dictionary klase tog objekta, ako ga nema ni tamo pretraga se rekurzivno seli na parent klase.

 

Dok su klase jedini čekić u kraljevstvu imenica, u Pythonu su one samo jedan od alata. Nedostatak klasa (osim razbacane logike) se već može vidjeti na primjeru PlaviKrug->PlaviKvadrat - kako organizirati hijerarhiju ako mi treba CrveniKrug, CrveniKvadrat, ili oba?

8 godina
neaktivan
offline
Python programiranje kao hobi

Znaci ovako?

x = plaviKrug()
Klasa je objekat, a x postaje instanca tog objekta?

 

x = 2

2 je objekat, a x postaje instanca objekta 2?

 

 

y = 'mojstring'

'mojstring' je objekat, a y postaje instanca tog objekta?

 

 
Samo da dodam

Znaci objekti bi bili sve one "stvari" koje u python-u imaju svoj id? Stim da nazivi, x, y... nose id "svog" objekta?

Poruka je uređivana zadnji put pon 18.4.2016 19:51 (rangoj).
 
0 0 hvala 0
15 godina
neaktivan
offline
Python programiranje kao hobi

Napisao sam program koji radi,na pocetku programa on stvara bazu podataka, problem nastaje kada taj py file pretvorim u exe file,onda ne zeli stvoriti bazu podataka?

 
0 0 hvala 0
10 godina
neaktivan
offline
Re: Python programiranje kao hobi
cale kaže...

Napisao sam program koji radi,na pocetku programa on stvara bazu podataka, problem nastaje kada taj py file pretvorim u exe file,onda ne zeli stvoriti bazu podataka?

 pokreni program preko cmd-a i onda ce ti ispisati gresku.

16 godina
neaktivan
offline
Re: Python programiranje kao hobi
Bobobo-bo Bo-bobo kaže...

... Nedostatak klasa (osim razbacane logike) se već može vidjeti na primjeru PlaviKrug->PlaviKvadrat - kako organizirati hijerarhiju ako mi treba CrveniKrug, CrveniKvadrat, ili oba?

Ne kuzim bas sto zelis reci, mozes li to malo bolje objasniti?

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
11 godina
neaktivan
offline
Re: Python programiranje kao hobi

Objekt je instanca klase - izraz instanca objekta nema smisla.

 

rangoj kaže...

x = plaviKrug()
Klasa je objekat, a x postaje instanca tog objekta?

 

1) plaviKrug je klasa

2) plaviKrug() kreira novi objekt, kreirani objekt je nova instanca klase plaviKrug

3) x je ime koje referencira objekt kreiran u 2), ili kraće referenca na taj objekt

 

rangoj kaže...

x = 2

2 je objekat, a x postaje instanca objekta 2?

y = 'mojstring'

'mojstring' je objekat, a y postaje instanca tog objekta?

 

Slično kao i gore: x je referenca na objekt 2 (taj objekt je instanca klase int), y je referenca na objekt 'mojstring' (taj objekt je instanca klase string)

 

rangoj kaže...
Samo da dodam


Znaci objekti bi bili sve one "stvari" koje u python-u imaju svoj id? Stim da nazivi, x, y... nose id "svog" objekta?

 

Da, ako dvije stvari imaju isti id onda su to identični objekti.

15 godina
neaktivan
offline
Python programiranje kao hobi

Izbacuje mi importError,no dbm clone found.

Riješio problem.Samo sam morao dodati.

from dbm import dumb*

c=dbm.dumb.open(filename)

Dok sam ja stalno otvarao bazu samo s dbm.

c=dbm.open(filename)

 

Poruka je uređivana zadnji put uto 19.4.2016 17:20 (cale).
 
0 0 hvala 0
11 godina
neaktivan
offline
Re: Python programiranje kao hobi
1domagoj1 kaže...
Bobobo-bo Bo-bobo kaže...

... Nedostatak klasa (osim razbacane logike) se već može vidjeti na primjeru PlaviKrug->PlaviKvadrat - kako organizirati hijerarhiju ako mi treba CrveniKrug, CrveniKvadrat, ili oba?

Ne kuzim bas sto zelis reci, mozes li to malo bolje objasniti?

 

Dizajn hijerarhije klasa nije trivijalan kad su atributi ortogonalni, kao u gornjem slučaju s dva neovisna atributa - oblik i boja.

 

U navedenom primjeru program ima klasu PlaviKrug i iz nje izvedenu klasu PlaviKvadrat. Novu klasu CrveniKrug najjednostavnije je izvesti iz klase PlaviKrug, ali se već vidi da nešto ne štima. Podklase PlaviKvadrat i CrveniKrug su neposredno izvedene iz iste klase PlaviKrug, ali su prilično različite.

 

Situacija se komplicira kad zatreba i klasa CrveniKvadrat. Možemo je izvesti iz CrvenogKruga (pa kopirati kod za "kvadrat" iz PlavogKvadrata), ili iz PlavogKvadrata (pa kopirati kod za "crveno" iz CrvenogKruga), ili reorganizirati klase na neki drugi način.

16 godina
neaktivan
offline
Re: Python programiranje kao hobi

Ali ja i dalje ne vidim zasto bi iz klase PlaviKrug izvodio klasu PlaviKvadrat? To uopce semanticki nema smisla.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
11 godina
neaktivan
offline
Re: Python programiranje kao hobi

Rangoju je očito imalo smisla kad je to naveo u svom postu. Želio sam ilustrirati kako nije uvijek lako definirati hijerarhiju klasa, kao npr. u circle-ellipse problemu. Čini se logično klasu Krug izvesti iz klase Elipsa (ili npr. Kvadrat iz Pravokutnika), ali u nekim slučajevima to nije dobro rješenje.

15 godina
neaktivan
offline
Python programiranje kao hobi

jos uvijek mucim muku s klasama i objektima i pokusavam doci do kristalne slike. Pokusao sam to shvatiti koristeci se Pojmom. Da li je krivo shvatiti klase kao jedan širi pojam,apstraktniji, a objekte kao niže pojmove koji su samo dio šireg pojma,odnosno oni su ono konkretno klase? Malo filozofski,klasa je samo jedna ideja a objekt je nacin na koji se ona realizira.Ideje "slobode","kapitalizma",itd....., da li bi one bile klase,a objekti kapitalizma bi bili tržišni zakoni ponude i potražnje?

 
0 0 hvala 0
16 godina
neaktivan
offline
Re: Python programiranje kao hobi
cale kaže...

jos uvijek mucim muku s klasama i objektima i pokusavam doci do kristalne slike. Pokusao sam to shvatiti koristeci se Pojmom. Da li je krivo shvatiti klase kao jedan širi pojam,apstraktniji, a objekte kao niže pojmove koji su samo dio šireg pojma,odnosno oni su ono konkretno klase? Malo filozofski,klasa je samo jedna ideja a objekt je nacin na koji se ona realizira.Ideje "slobode","kapitalizma",itd....., da li bi one bile klase,a objekti kapitalizma bi bili tržišni zakoni ponude i potražnje?

Pa ono, tako nekako.

Najlakse ti je zamisliti klasu kao nacrt, a objekt kao konkretnu realizaciju tog nacrta.

Tipa, imas nacrtan auto na papiru -> klasa, napravis fizicki auto po tom nacrtu -> objekt.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
Nova poruka
E-mail:
Lozinka:
 
vrh stranice