-
Introducere în introspecție și reflecție
- Definirea introspecției și reflecției
- De ce sunt importante în programare
-
Introspecția obiectelor
- Identificarea tipului unui obiect
- Explorarea atributelor și metodelor
-
Introspecția claselor și modulelor
- Examinarea atributelor și metodelor claselor
- Inspectarea modulelor și a conținutului lor
-
Introspecția funcțiilor și metodelor
- Obținerea informațiilor despre argumentele unei funcții
- Examinarea codului sursă
-
Introspecția și reflecția cu modulul
inspect- Prezentarea modulului
inspect - Utilizarea funcțiilor de introspecție și reflecție din
inspect
- Prezentarea modulului
-
Manipularea obiectelor în timpul rulării
- Crearea și modificarea atributelor și metodelor dinamic
- Utilizarea
execșievalpentru a executa cod dinamic
-
Recapitulare și bune practici
- Rezumatul lecției și a tehnicilor prezentate
- Bune practici pentru utilizarea introspecției și reflecției în Python
Exemple și exerciții pentru fiecare subpunct:
Exemplu: Introspecția obiectelor
numar = 42
print(type(numar))
print(dir(numar))
Exercițiu:
Creați o clasă cu câteva atribute și metode. Apoi creați o instanță a acestei clase și utilizați introspecția pentru a explora atributele și metodele disponibile.
Exemplu: Introspecția claselor și modulelor
class Exemplu:
atribut = "valoare"
def metoda(self):
pass
print(Exemplu.__dict__)
Exercițiu:
Importați un modul și utilizați introspecția pentru a examina clasele, funcțiile și variabilele definite în acesta.
Exemplu: Introspecția funcțiilor și metodelor
def exemplu(arg1, arg2, kwarg1=None):
pass
import inspect
print(inspect.signature(exemplu))
Exercițiu:
Creați o funcție și utilizați introspecția pentru a obține informații despre argumentele sale și valorile implicite.
Exemplu: Introspecția și reflecția cu modulul inspect
import inspect
def functie_exemplu():
pass
print(inspect.isfunction(functie_exemplu))
print(inspect.getsource(functie_exemplu))
Exercițiu:
Creați o clasă cu câteva metode și utilizați modulul inspect pentru a examina metodele și a obține codul sursă al acestora.
Exemplu: Manipularea obiectelor în timpul rulării
class Exemplu:
pass
obiect = Exemplu()
obiect.nume = "Nume dinamic"
print(obiect.nume)
cod = """
def salut(nume):
return f"Salut, {nume}!"
"""
exec(cod)
print(salut("Andrei"))
Exercițiu:
Creați un obiect al unei clase și adăugați-i dinamic o metodă care să returneze suma a două numere.
Rezumat:
În această lecție, am discutat despre introspecție și reflecție în Python. Am învățat cum să examinăm și să interacționăm cu obiectele, clasele, modulele, funcțiile și metodele în timpul rulării.
Am explorat cum să identificăm tipul unui obiect și să examinăm atributele și metodele sale. Am discutat despre introspecția claselor și modulelor și am învățat cum să explorăm atributele,metodele și conținutul acestora.
Am abordat introspecția funcțiilor și metodelor și am învățat cum să obținem informații despre argumentele lor și valorile implicite. Am discutat despre modulul inspect și am explorat funcțiile sale de introspecție și reflecție.
Am discutat despre manipularea obiectelor în timpul rulării și am învățat cum să creăm și să modificăm atributele și metodele dinamic. Am prezentat utilizarea exec și eval pentru a executa cod dinamic.
În final, am recapitulat lecția și am oferit bune practici pentru utilizarea introspecției și reflecției în Python. Cunoștințele dobândite în această lecție ne vor ajuta să scriem cod mai flexibil și să explorăm și să interacționăm cu obiectele, clasele și modulele în moduri avansate. Aceste tehnici sunt utile în domenii precum dezvoltarea de cadre de testare, instrumente de generare a documentației și sisteme de plugin-uri.