28.01.2015 Views

Tutorial Python - Starship

Tutorial Python - Starship

Tutorial Python - Starship

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.

adăuga propriile atribute dată fără a afecta în vreun fel metodele, atâta timp cât nu apar conflicte de nume(şi aici<br />

existenţa unei convenţii vă poate scuti de multe neplăceri).<br />

Nu există nici o scurtătură pentru referirea atributelor din interiorul unei metode. Acest lucru clarifică codul unei<br />

metode, nemaiexistând posibilitatea confuziei între variabilele locale şi variabilele instanţei.<br />

În mod convenţional, primul argument al unei metode are numele: self. Aceasta este numai o convenţie, numele<br />

self neavând nici o semnificaţie specială în <strong>Python</strong>. Folosind această convenţie codul dumneavoastră va fi mai<br />

uşor de citit de către programatori.<br />

Orice obiect funcţie, ca atribut al unei clase, defineşte o metodă asociată pentru instanţele unei clase. Nu este<br />

neapărat necesar ca definiţia unei funcţii să se afle în cadrul definiţiei clasei. În acest sens se poate atribui un<br />

obiect funcţie unei variabile locale. De exemplu:<br />

# Functie definita inafara clasei<br />

def f1(self, x, y):<br />

return min(x, x+y)<br />

class C:<br />

f = f1<br />

def g(self):<br />

return ’hello world’<br />

h = g<br />

Acum f,g, şi h sunt toate atribute ale clasei C, şi sunt atribute funcţiei, şi în mod consecvent sunt metode pentru<br />

toate instanţele clasei C. Această practică nu este indicată, întrucât nu face decât să încurce cititorul programului.<br />

Metodele pot apela alte metode utilizând metoda atributelor argumentului self :<br />

class Bag:<br />

def empty(self):<br />

self.data = []<br />

def add(self, x):<br />

self.data.append(x)<br />

def addtwice(self, x):<br />

self.add(x)<br />

self.add(x)<br />

Metodele pot face referiri la nume globale în acelaşi mod ca funcţiile obişnuite. Domeniul global de vizibilitate<br />

asociat unei metode permite accesul la domeniul de definiţie a numelor asociat modulului în care se află definită<br />

clasa căreia îi aparţine metoda.<br />

Clasa în sine nu este folosită niciodată ca un domeniu global de vizibilitate. Pot fi găsite multe utilizări ale<br />

domeniului global de vizibilitate, deşi unii ar putea considera inutilă existenţa acestuia.<br />

9.5 Moştenirea<br />

Nu putem spune despre un limbaj că este orientat pe obiect, dacă sistemul de clase nu pune la dispoziţie mecanismul<br />

de moştenire. Sintaxa pentru moştenire (adică pentru crearea definiţiei unei clase derivate dintr-o clasă de<br />

bază) este următoarea:<br />

62 Capitolul 9. Clase

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

Saved successfully!

Ooh no, something went wrong!