You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
7.5. Naslježivanje 67c = 89d = 123def g(self): print "metoda g u klasi C"def h(self): print "metoda h u klasi C"U ovom kodu, klasa C premo²¢uje atribute b i g od njene superklase B.7.5.2 Posluºivanje metoda superklaseKada podklasa C premosti metodu f svoje superklase B, tijelo C.f £esto ºeli predati neki dio svojeoperacije implementaciji metode superklase. Ovo se moºe napraviti koriste¢i nepovezanu metodu, kakoslijedi:class Gornja:def pozdrav(self, ime): print "Zdravo ", imeclass Donja(Gornja):def pozdrav(self, ime):print "Dobro do²li",Gornja.pozdrav(self, ime)x = Donja( )x.pozdrav('Miki')Predaja superklasi, u tijelu Donja.pozdrav, koristi nepovezanu metodu dobivenu referencom atributaGornja.pozdrav na superklasi, i zato prenosi sve atribute normalno, uklju£uju¢i self. Predajaili posluºivanje implementaciji superklase je glavna korist nepovezanih metoda.7.5.3 Vi²eobli£jeVi²eobli£je ili polimorzam, (eng. polymorphism) ili dinami£ko povezivanje potpuno se otkriva krozproces traºenja nekog atributa, prethodno opisano u naslježivanju objekata. Kad god se metodi pristupasa obj.method(), prvo se metoda locira traºenjem __dict__ atributa instance, pa instancine klasnedenicije, pa roditeljskih klasa. To traºenje uvijek ide u tom redoslijedu. Prvi uspje²ni pronalazakkoristi se kao traºena metoda.7.5.4 Skrivanje informacije (engl. information hiding)Pretpostavlja se da su svi atributi javni (engl. public). To zna£i da su svi atributi klasne instancedohvatljivi bez ikakvog ograni£enja. To takožer povla£i da sve ²to je denirano u temeljnoj, roditeljskojklasi naslježuje se i dohvatljivo je u izvedenoj klasi. Takvo pona²anje je £esto nepoºeljno u objektuorjentiranim primjenama, jer to otkriva nutarnju strukturu objekta i moºe voditi koniktima prostoraimena izmežu objekata deniranih u izvedenoj klasi i onih deniranih u roditeljskoj klasi. Da bi serije²io ovaj probleem, uvedeno je da sva imena u klasi koja po£inju s dvostrukom donjom crtom (__) ,kao ²to je __Moj, pretvara se u oblik _Classname __Moj. To pruºa rje²enje za klasu da ona ima privatneatribute, budu¢i da privatna imena u izvedenoj klasi ne¢e kolidirati s imenima u temeljnoj klasi jer suimena klasa nuºno razli£ita, a dolaze ispred imena atributa. Na primjer:class A:def __init__(self):self.__X = 3# Pretvara se u self._A__Xclass B(A):def __init__(self):