Curs Avansat de Dezvoltare Python
Capitolul
>
Nivel
Module Matematice
Introspecția codului
Obiectiv
Inspectează câteva obiecte vechi depozitate la pod folosind introspecția de cod pentru a afla ce sunt și cum sunt folosite.
La pod se află un birou rar folosit și există câteva cufere vechi ce conțin valori care au fost uitate de mult timp. Dacă nu se specifică altfel sau dacă o notă nu furnizează informațiile, uneori poate fi destul de dificil să identifici obiectele sau constantele colectate în teren. Nu numai atât, poate fi dificil de identificat gama de lucruri pe care le poți realiza cu un obiect specific sau care sunt proprietățile lui. Pentru a aborda această problemă, putem folosi introspecția codului.
Introspecția codului ne permite să inspectăm și să identificăm anumite fragmente de cod și să indicăm unele dintre proprietățile acestuia. Pentru aceasta, vom folosi patru (4) funcții de introspecție încorporate în codul de bază Python: type(), id(), repr(), dir() și help(). Acestea funcționează după cum urmează:
type(): Această funcție îți spune ce tip de obiect este argumentul pe care îl introduci. De exemplu, dacă introduci o variabilă ca argument, funcția va identifica obiectul drept o variabilă.id(): Fiecare obiect creat vreodată în Python are un id unic care identifică obiectul în cod. Introducând un obiect ca argument al acestei funcții, se va returna id-ul unic al obiectului.repr(): Convertește o valoare care nu este de tip string într-un șir de caractere, fiind util pentru conversia datelor într-o formă lizibilă.dir(): Afișează toate atributele pe care le are obiectul, fiind util pentru a ști ce se poate realiza cu un anumit tip de obiect.help(): Afișează toate informațiile despre un anumit obiect, funcție, clasă, etc. disponibile în registrul Python.
În plus, avem o nouă funcție asincronă, funcția display(). Această funcție este similară cu funcția read(), dar îți permite să afișezi date dinamice, la fel ca funcțiile de introspecție a codului, care produc date dinamice. Sintaxa acesteia este următoarea: await player.dysplay( -data-). Toate aceste funcții vor fi utile pentru analizarea datelor; acestea sunt utile atunci când folosim Metode și începem importarea de funcții noi, precum și pentru analizarea oricărui cod din care dorim să identificăm proprietăți.
Vom folosi aceste funcții pentru a identifica și catalogiza obiectele depozitate la pod. Pentru început, mergi spre semnele X întunecate de deasupra covoarelor colorate, începând cu cel de deasupra covorului roșu. În această zonă se găsesc trei (3) constante: red_container, green_container și blue_container; aceste constante reprezintă containere din fiecare cufăr corespunzător fiecărui covor colorat.
Pentru fiecare semn X, orientează-te spre cufăr și folosește funcția open() pentru a deschide cufărul; utilizează funcția collect() cu constanta corespunzătoare covorului colorat pentru a o prelua din cufăr. Folosește funcția de introspecție type() pentru a identifica ce tip de constantă se află în cufăr; rezultatul produs este date brute, iar pentru aceasta folosim funcția repr() pentru a-l converti într-un șir de caractere. Folosește funcția speak() pentru a afișa șirul rezultat din combinarea funcțiilor și a constantei, de exemplu: player.speak(repr(type(red_container))). Completează cu funcția speak() folosind constanta pentru a identifica conținutul direct, de exemplu: player.speak(red_container).
Odată ce toate cele trei (3) constante au fost colectate, introspectate și identificate, mergi la semnul X luminos de în fața biroului. Creează trei variabile denumite: item_id_red, item_id_green, item_id_blue; acestea vor fi folosite pentru a stoca numerele de identificare pentru fiecare dintre constantele colectate. Utilizează funcția de introspecție id() pentru a obține numărul de identificare unic al constantei, adăugând-o ca argument. Potrivește numele variabilei cu numele constantei folosind acest format, de exemplu: item_id_red = id(red_container), fă acest lucru pentru toate cele trei (3) variabile și constante.
Odată ce toate cele trei (3) variabile au fost populate, stochează-le într-o listă denumită item_list și la semnul X luminos folosește funcția display() pentru a te asigura că este notat pe nota de pe masă, astfel: await player.display(item_list).
Acum că lista a fost notată, mergi la semnul X întunecat de deasupra covorului violet și orientează-te spre birou. Aici vom folosi funcția dir() pentru a identifica atributele pe care le are lista; totuși, rezultatul este date brute, care pot fi dificil de afișat. Pentru aceasta, folosim funcția repr() pentru a transforma datele într-un șir de caractere lizibil. Creează o variabilă denumită item_attributes și stochează șirul rezultat, astfel: item_attributes = repr(dir(item_list)). În final, folosește funcția display() pentru a te asigura că este notat pe nota de pe masă.
Mergi la semnul X întunecat de deasupra covorului alb pentru a face același lucru ca la dir(), dar cu help(), care va evidenția toate documentațiile de utilizare ale obiectului. Creează o variabilă denumită item_help și stochează șirul rezultat, astfel: item_help = repr(help(item_list)). În final, folosește funcția read() pentru a te asigura că este notat de asemenea pe nota de pe masă, pentru a finaliza nivelul.