lettura facile

La funzione getattr() in Python

La funzione getattr() in Python è utilizzata per accedere al valore di un attributo di un oggetto dinamicamente.

getattr(object, name[, default])

I parametri della funzione sono i seguenti:

  • object: l'oggetto dal quale vuoi recuperare l'attributo.
  • name: il nome dell'attributo che vuoi ottenere.
  • default (opzionale): il valore che viene restituito se l'attributo specificato non esiste. Se non specifichi questo parametro, quando l'attributo non esiste getattr() solleva un'eccezione "AttributeError".

Questa funzione recupera il valore assegnato all'attributo dell'oggetto che hai indicato.

Questo può essere particolarmente utile quando hai un oggetto di una classe e vuoi accedere a uno di questi attributi. Ti dà anche la possibilità di gestire anche la situazione in cui un attributo non esiste, fornendo un valore di default.

Ecco un esempio pratico.

Crea una classe "Persona" composta da due attributi "nome" e "età".

class Persona:
   def __init__(self, nome, eta):
      self.nome = nome
      self.eta = eta

Poi istanzia un oggetto "persona" dalla classe.

persona = Persona("Mario", 30)

All'oggetto viene assegnata la stringa "Mario" all'attributo "nome" e il valore intero 30 all'attributo "eta"

A questo punto puoi usare la funzione getattr() per accedere ai valori degli attributi.

Se accedi all'attributo "nome", la funzione getattr() legge e restituisce la stringa "Mario"

nome_persona = getattr(persona, "nome")
print(nome_persona)

Mario

Se invece accedi all'attributo "eta", viene restituito il valore 30

eta_persona = getattr(persona, "eta")
print(eta_persona)

30

Ricorda che se l'attributo non esiste nell'oggetto, Python solleva un'eccezione "AttributeError"

Ad esempio, se cerchi il campo "hobby" (che non esiste) viene restituito questo messaggio di errore

hobby_persona = getattr(persona, "hobby")

Traceback (most recent call last):
  File "/home/main.py", line 14, in <module>
    hobby_persona = getattr(persona, "hobby")
AttributeError: 'Persona' object has no attribute 'hobby'

Per evitare di vedere questo messaggio, puoi impostare un valore di default nella funzione getattr().

Accesso ad un attributo inesistente con default

Prova ad accedere a un attributo (hobby) che non esiste nell'oggetto, indicando anche un valore di default ("Non specificato").

hobby_persona = getattr(persona, "hobby", "Non specificato")
print(hobby_persona)

La funzione getattr() non trova l'attributo ma non solleva più un'eccezione.

In questo caso restituisce il valore di default.

"Non specificato"

Questo ti permette di gestire in modo elegante i casi in cui un attributo potrebbe non essere presente, evitando errori nel programma.




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin