Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
în loc de un fişier.<br />
Metodele obiectelor au, de asemenea, atribute: metodă.im__self reprezintă obiectul de care aparţine metoda<br />
specificată, iar metodă.im__func reprezintă funcţia corespunzătoare metodei.<br />
9.8 Excepţiile pot fi clase<br />
Excepţiile definite de utilizator pot fi atât obiecte de tip string, cât şi clase. Folosind clasele pentru a defini<br />
excepţii, puteţi crea o întreagă ierarhie de excepţii care poate fi foarte uşor extinsă.<br />
Există o altă formă a insrucţiunii raise:<br />
raise Class, instance<br />
raise instance<br />
În prima formă instance trebuie să fie o instanţă a clasei Class sau a unei clase derivate. A doua formă este<br />
o prescurtare pentru:<br />
raise instance.__class__, instance<br />
O clauză except poate afişa atât excepţii de tip clasă, cât şi de tip şir de caractere. Următorul exemplu va afişa<br />
B, C, D în această ordine:<br />
class B:<br />
pass<br />
class C(B):<br />
pass<br />
class D(C):<br />
pass<br />
for c in [B, C, D]:<br />
try:<br />
raise c()<br />
except D:<br />
print "D"<br />
except C:<br />
print "C"<br />
except B:<br />
print "B"<br />
De observat că dacă ordinea clauzelor except ar fi fost inversă, (cu except B la început), exemplul ar fi afişat<br />
B, B, B; deoarece clasa B este clasa din care sunt derivate clasele C şi D.<br />
Când un mesaj de eroare este afişat pentru o excepţie netratată ce provine dintr-o clasă, numele clasei este de<br />
asemenea afişat.<br />
9.9 Iteratori<br />
Pâna acum aţi observat că majoritatea obiectelor container se pot baleia utilizând instrucţiunea for :<br />
9.8. Excepţiile pot fi clase 65