12.07.2015 Views

Python

Python

Python

SHOW MORE
SHOW LESS

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 657.4.4 Brojanje referenci i brisanje instanceSve instance imaju brojilo referenci. Ako brojilo referenci postane jednako nuli, instanca se bri²e. Iakopostoji vi²e na£ina kako izbrisati referencu, program naj£e²¢e koristi del naredbu za brisanje referencena objekt. Ako brisanje neke refernce u£ini da se brojilo referenci objekta smanji na nulu, program ¢epozvati __del__() metodu. <strong>Python</strong>-ov 'skuplja£ sme¢a' bri²e iz memorije sve instance koje su ostalebez referenci i na taj na£in oslobaža memorijski prostor drugim objektima.7.5 NaslježivanjeNaslježivanje je mehanizam stvaranja novih klasa koje specijaliziraju ili mijenjaju pona²anje postoje¢eklase. Originalna klasa zove se temeljna, roditeljska klasa (bazna, eng. base class) ili nadklasa, superklasa(engl. superclass). Nova klasa se zove izvedena klasa ili podklasa (eng. subclass). Kada se klasastvara putem naslježivanja, ona naslježuje atribute denirane u njenim roditeljskim klasama. Mežutim,izvedena klasa moºe redenirati bilo koji od ovih atributa i dodati nove vlastite atribute. Naslježivanjese specicira s listom imena roditeljskih klasa koje se odvajaju zarezom u class naredbi. Na primjer:class A:varA = 42def method1(self):print "Class A : method1"class B:varB = 37def method1(self):print "Class B : method1"def method2(self):print "Class B : method2"class C(A,B): # Naslježuje se od A i BvarC = 3.3def method3(self):print "Class C : method3"class D: passclass E(C,D): passAko se traºi atribut deniran u temeljnoj klasi, onda se koristi algoritam u dubinu (eng. depth-rstsearch) za pretraºivanje i to u temeljnim klasama kako su navedene u poretku prilikom denicije klase.Na primjer, u klasi E u prethodnom primjeru, temeljne klase se pretraºuju redoslijedom C, A, B, D. Uslu£aju da vi²estruke temeljne klase deniraju isti simbol, uzet ¢e se prvi simbol kojeg procs traºenjanaže. Na primjer:c = C()c.method3()c.method1()c.varB# Create a 'C'# Invoke C.method3(c)# Invoke A.method1(c)# Access B.varBAko izvedena klasa denira atribut s istim imenom kao atribut u temeljnoj klasi, onda ¢e instanceod izvedene klase koristiti atribute izvedene, a ne roditeljske klase. Ako se ipak ºeli koristiti originalniatribut, onda se mora napisati puno ime do tog atributa, tj. ime_roditeljske_klase.atribut, kaona primjer:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!