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.

atunci MyClass.i şi MyClass.f sunt referinţe la atribute valabile. Unul dintre atribute este un întreg (i),<br />

iar celălalt o metodă(f). Se pot realiza atribuiri cu atributele unei clase, deci puteţi modifica valoarea atributului<br />

MyClass.i printr-o atribuire. __doc__ este de asemenea un atribut al clasei, care are valoarea : “Un exemplu<br />

simplu de clasa”.<br />

Instanţierea claselor foloseşte notaţia de la funcţii. Putem să ne imaginăm că obiectul clasă este o funcţie fără<br />

parametrii care întoarce, ca rezultat, o nouă instanţă pentru respectiva clasă. Exemplul următor:<br />

x = MyClass()<br />

crează o nouă instanţă a clasei şi atribuie acest obiect variabilei locale x.<br />

Operaţia de instanţiere crează un obiect vid. Multe clase preferă să creeze un obiect într-o stare iniţială. Pentru a<br />

realiza acest lucru clasa trebuie să aibă definită o metodă specială, numită __init__(), ca în exemplul de mai<br />

jos:<br />

def __init__(self):<br />

self.data = []<br />

Atunci când o clasă are definită metoda __init__(), la instanţierea ei se apelează automat metoda __init_-<br />

_(). În acest fel se obţine o instanţă iniţializată a clasei :<br />

x = MyClass()<br />

Metoda __init__() poate avea şi argumente. În acest caz argumentele primite la instanţierea clasei sunt<br />

transmise automat metodei __init__(). De exemplu:<br />

>>> class Complex:<br />

... def __init__(self, realpart, imagpart):<br />

... self.r = realpart<br />

... self.i = imagpart<br />

...<br />

>>> x = Complex( 3.0, -4.5)<br />

>>> x.r, x.i<br />

(3, 0, 4.5)<br />

Vă puteţi gândi la metoda __init__() ca la un constructor, deşi nu este un constructor în toată puterea cuvântului.<br />

9.3.3 Obiecte instanţiate<br />

Ce putem face cu instanţele Singurele operaţiuni acceptate sunt operaţiunile cu atribute. Există două tipuri de<br />

nume de atribute valide : proprietăţi şi metode.<br />

Prima categorie sunt propietăţile, sau atribute de tip dată. Această categorie corespunde “variabilelor instanţei” în<br />

SmallTalk, şi “membrilor dată” în C++, create automat atunci când le sunt atribuite valori. Dacă x este o instanţă<br />

a clasei MyClass următoarea porţiune de cod va afişa valoarea 16:<br />

x.counter = 1<br />

while x.counter < 10:<br />

x.counter = x.counter * 2<br />

print x.counter<br />

del x.counter<br />

A doua categorie sunt metodele. O metodă este o funcţie ce aparţine unui anumit obiect.(În <strong>Python</strong> termenul de<br />

metodă nu desemnează doar o funcţie ce aparţine numai instanţei unei clase, adică unui obiect clasă; şi alte tipuri<br />

60 Capitolul 9. Clase

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

Saved successfully!

Ooh no, something went wrong!