Am văzut că putem avea mai multe valori grupate în șiruri, fiecare fiind identificată prin poziția sa în șir. În Python, elementele șirurilor nu trebuie să aibă același tip.
Dar, poate dorim să grupăm diferite valori și să nu știm exact pe ce poziție am pus o anumită valoare. Sunt cazuri în care este logic ca anumite valori să fie împreună. De exemplu, am putea avea o persoană pentru care dorim să știm numele și vârsta; numele ar fi un string, iar vârsta un număr întreg. Am putea lucra cu două variabile, dar nu ar exista nicio legătură clară între ele.
Dacă am complica puțin problema și am dori să creăm un șir de persoane, atunci am avea un șir de nume și un șir de vârste. Ar trebui să avem grijă ca, în cele două șiruri, numărul de ordine să fie același pentru o anumită persoană. Totuși, ar fi mult mai simplu să avem un șir de persoane, nu?
În Python putem crea așa-numitele obiecte; un obiect poate avea diferite proprietăți. În cazul nostru am avea un obiect care reprezintă o persoană și obiectul respectiv ar avea două proprietăți: numele și vârsta.
În Python putem defini o structură a obiectelor de la bun început, însă ea se poate schimba oricând. Putem spune că persoanele au nume și vârstă. Este un fel de șablon care ne spune ce conțin obiectele noastre; acest șablon se numește clasă. Clasele ajung să fie foarte complicate și au multe utilizări, dar deocamdată ne limităm la elementele de bază.
Pentru a defini o clasă va trebui să precizăm numele său și numele proprietăților obiectelor care fac parte din clasa respectivă. Clasa noastră ar fi definită astfel:
1 2 3 |
class Persoana(object): nume = "" varsta = 0 |
Observați că am folosit cuvântul class urmat de numele clasei și apoi, între parantezele rotunde, urmează object , descriind natura clasei Persoana , după : am specificat numele proprietăților. Proprietățile sunt declarate la fel ca variabilele; diferența față de variabilele obișnuite este faptul că ele nu există independent, ci doar în interiorul obiectelor.
Dacă am definit clasa, putem crea acum obiecte. Pentru fiecare obiect vom avea o variabilă care va fi utilizată pentru a lucra cu obiectul respectiv. Acestei variabile îi putem atribui un obiect existent sau putem să creăm un nou obiect. Deocamdată nu avem niciun obiect, deci vom crea unul. Acest lucru se realizează simplu, folosind numele clasei urmat de o pereche de paranteze rotunde (vom vedea în episoadele următoare care este rolul parantezelor respective):
1 |
elev = Persoana() |
Acum avem un obiect elev care reprezintă o persoană, dar nu am precizat încă numele și vârsta sa. Trebuie să accesăm cumva proprietățile respective. Pentru aceasta va trebui să precizăm numele obiectului (nu al clasei), urmat de semnul . și apoi de numele proprietății. Dacă dorim să spunem că Dragoș are 17 ani, putem folosi următoarele instrucțiuni:
1 2 |
elev.nume = "Dragoș" elev.varsta = 17 |
Pentru a folosi informațiile respective, le putem accesa folosind aceeași construcție:
1 2 |
print(elev.nume) print(str(elev.varsta)) |
Să vedem cum ar arăta un program complet:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class Persoana(object): nume = "" varsta = 0 elev = Persoana() elev.nume = "Dragos" elev.varsta = 17 out = elev.nume out += " : " out += str(elev.varsta) print(out) |