getattr(), setattr(), hasattr(), delattr() în Python

Clase și obiecte Python 3.0+

Citesc, setează, verifică sau șterg un atribut al unui obiect după numele lui dat ca text.

Sintaxă
getattr(obiect, nume[, implicit])
setattr(obiect, nume, valoare)
hasattr(obiect, nume)
delattr(obiect, nume)

Ce face getattr(), setattr(), hasattr(), delattr()

Aceste funcții lucrează cu atribute al căror nume îl ai doar ca text, la rulare: getattr(p, "nume") este echivalent cu p.nume, iar setattr(p, "nume", "Ana") cu p.nume = "Ana".

getattr cu o valoare implicită nu mai aruncă AttributeError când atributul lipsește. hasattr verifică existența, iar delattr șterge atributul (ca del p.nume).

Parametri

Parametru Descriere
obiect Obiectul (sau clasa, modulul).
nume Numele atributului, ca text.
implicit / valoare Valoarea returnată dacă lipsește (getattr) sau valoarea setată (setattr).

Ce returnează

getattr: valoarea. hasattr: True/False. setattr, delattr: None.

Exemple

Exemplul 1: Atribute dinamice

class Setari:
    tema = "luminoasă"

s = Setari()
for camp, valoare in {"limba": "ro", "tema": "întunecată"}.items():
    setattr(s, camp, valoare)

print(getattr(s, "tema"), getattr(s, "limba"))
print(getattr(s, "font", "implicit"))
print(hasattr(s, "limba"))
delattr(s, "limba")
print(hasattr(s, "limba"))

Rezultat

întunecată ro
implicit
True
False

Exemplul 2: Apelarea unei metode după nume

text = "Brașov"
for operatie in ["upper", "lower", "swapcase"]:
    print(getattr(text, operatie)())

Rezultat

BRAȘOV
brașov
bRAȘOV

Greșeli frecvente

  • Folosești getattr(obiect, "nume") când numele este fix. Scrie direct obiect.nume; funcțiile sunt pentru nume cunoscute doar la rulare.

Comenzi înrudite

  • dir(): Listează numele (atribute și metode) disponibile într-un obiect sau modul.
  • globals(), locals() și vars(): Returnează dicționarele cu variabilele globale, cele locale sau atributele unui obiect.
  • class: Definește o clasă: un șablon pentru obiecte care au date (atribute) și comportament (metode).
  • property(): Transformă o metodă într-un atribut calculat, cu verificare la citire și la scriere.