Da pokusam ja...
>jel moze netko na brzinu objasniti, sta predstavlja "def nesto" izvan klase i unutar klase
Ako je unutar klase, onda je dostupno samo klasi u kojoj se nalazi, i tu funkciju pozivas preko klase.
Npr:
Code:
class Ispis:
"""Jednostavan primjer ispisivanja
teksta"""
def __init__(self, tekst):
"provjera teksta"
if len(tekst)==0:
raise "Unesite tekst on najmanje 1 karakter"
self.tekst = tekst
def ispis(self):
"ispis teksta"
print "Tekst ispisan pomocu klase:"
print self.tekst
def ispis2(teks):
"ispis teksta"
print tekst
Ako sad napravis instancu klase:
t = Ispis("Proba ispisa iz klase.")
...i zelis da ispises tekst, moras pozvati funkciju unutar klase:
t.ispis()
...jer ce pozivanje samo ispis() prijaviti gresku.
Funkcija ispis2 je van klase i nju pozivas, logicno, direktno. Ovo ima veze sa funkcionalnim programiranjem i objektnim programiranjem, odnosno razlicitim pristupima pisanja koda.
> i sta predstavlja kad pise def "_nesto_" i def "nesto" ?
Funkcije koje su omedjene sa __ su rezervisane funkcije i imaju poseban znacaj. U gornjem primjeru je __init__ funkcija i njena jedina namjena jeste da se prva izvrsi nakon sto se kreira instanca, tj. "kopija" klase. U gornjem slucaju, __init__ provjerava da li je uneseni tekst duzi od jednog karaktera, i ukoliko nije, prijavljuje se greska. Ukoliko je sve u redu, tekst postaje javno dostupan citavoj klasi (zbog ovog self.) i moze de iskoristiti u funkciji ispis() unutar klase. Drugi primjer bi bilo __add__ koje odredjuje kako ce se klase ponasati ukoliko se "sabiraju", itd...
>citao sam nesto o tome, da se klase, objekti odredjuju sa tab-om ili razmakom.
To je konvencija Python jezika: blokovi koda se odvajaju blanko znakovima (cini mi se sa 4) i praznim linijama.
PS
O klasama u Pythonu:
http://diveintopython.org/object_oriented_framework/index.html