You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
66 <strong>Python</strong> - objektni jezikclass D(A):def method1(self):print "Class D : method1"A.method1(self)# poziva roditeljsku metoduJedna posljedica ove £injenice nalazi se u inicijalizaciji klasnih instanci. Kad se instanca stvara, ondase ne poziva metoda __init__() roditeljskih klasa. To zna£i, da je u izvedenoj klasi nuºno na£initiispravnu inicijalizaciju roditeljske klase, ako je to potrebno. Na primjer:class D(A):def __init__(self, args1):# Inicijalizacija roditeljske klaseA.__init__(self)# Initialize myself...Sli£ni koraci mogu takožer biti nuºni kad se deniraju akcije £i²¢enja (brisanja objekata) u __del__()metodi. Kada se koristi referenca atributa C.ime na objekt klase, i 'ime' nije klju£ u C.__dict__,potraga se implicitno prosliježuje na svaki objekt klase koji je u C.__bases__, po redoslijedu navoženja.C-ove roditeljske klase mogu imati i vlastite roditeljske klase. U ovom slu£aju, potraga rekurzivnoproslježuje navi²e, po drvetu nasliježa, zaustavljaju¢i se kada je 'ime' naženo. Potraga je po dubini,²to zna£i da pregledava pretke svake roditeljske klase od C prije pregleda sljede¢e roditeljske klase odC. Slijedi primjer:class Roditeljska_1:def neka_metoda(self): print "Roditeljska_1"class Roditeljska_2(Roditeljska_1): passclass Base3:def neka_metoda(self): print "Roditeljska_3"class Izvedena(Roditeljska_2, Roditeljska_3): passinst1 = Izvedena( )inst1.neka_metoda( ) # ispisuje se: "Roditeljska_1"U ovom slu£aju potraga za metodom zapo£inje u klasi Izvedena. Ako tamo nije pronažena, potragase nastavlja na Roditeljska_2. Ako ni tamo atribut nije nažen, potraga ide na pretka Roditeljska_2,tj. na Roditeljska_1, gdje je atribut napokon nažen. Tako se pretraga zaustavlja na toj to£ki i nikadane uzima u obzir Roditeljska_3, gdje bi se taj atribut takožer na²ao.7.5.1 Premo²¢uju¢i atributiPotraga za atributom, kako je obja²njeno, ide navi²e po drvetu nasliježa (prema precima), te se zaustavljakada je atribut pronažen. Potoma£ke klase pregledavaju se prije predaka, ²to zna£i da kadapodklasa denira atribut s istim imenom kao i onaj na superklasi, pretraga nalazi deniciju na podklasii tu se zaustavlja. Ovo je poznato kao premo²¢ivanje (engl. overriding) denicije u superklasi kojeobavlja podklasa:class B:a = 23b = 45def f(self): print "metoda f u klasi B"def g(self): print "metoda g u klasi B"class C(B):b = 67