In questo articolo acquisirai conoscenza del metodo setttr () di Python, mentre copriamo ciò che realizza, quando impiegarlo e quando non è necessario. Indipendentemente dal fatto che l'attributo sia presente o meno, il metodo viene utilizzato per definire il valore di un attributo per un oggetto.
Sintassi della funzione settrattr () in Python
Di seguito è riportata la sintassi setttr () che abbiamo distribuito in uno script Python:
setattr (set_object, set_variable, set_value)
L'oggetto.Il parametro dell'attributo è impostato su un valore uguale usando il nome degli argomenti dell'oggetto, il nome della variabile e il valore. Questa funzione non lancia alcuna eccezione perché qualsiasi proprietà dell'oggetto può essere di un determinato tipo. Non restituisce nulla alla funzione di chiamata.
Esempio 1: programma di utilizzo della funzione setTR ()
Il metodo setattr () mostra come la programmazione orientata agli oggetti funziona ancora bene in queste situazioni ed è molto utile se gli attributi di un oggetto possono cambiare mentre viene utilizzato. Ecco il programma per dimostrare il funzionamento della funzione SetAttr ():
dipendente di classe:
Emp_name = 'alice'
my_object = dipendente ()
Stampa ("Prima del nome del dipendente settratr:", my_object.Emp_name)
setattr (my_object, 'emp_name', 'alice jeo')
Stampa ("Dopo il nome del dipendente setTRT:", MY_OBJECT.Emp_name)
Nella sceneggiatura, abbiamo stabilito per la prima volta una classe rappresentata con il nome "dipendente". Nella classe specificata, abbiamo creato una variabile di classe come "emp_name". La variabile di classe "emp_name" è impostata con il valore stringa che è il nome del dipendente. Quindi, abbiamo definito un oggetto come "my_object" e invocato il "dipendente" di classe. La stampa viene utilizzata qui per stampare il valore della variabile "emp_name" prima che la funzione setattr () sia distribuita.
Alla funzione setTRT, abbiamo superato tre input: My_obeject, il nome della variabile "emp_name" e il valore modificato della variabile "emp_name". Quindi, nell'ultima istruzione di stampa, abbiamo stampato il nome del dipendente dopo aver utilizzato la funzione setattr ().
Quanto segue è il risultato ottenuto dalla sceneggiatura precedente della funzione Python setattr ():
Esempio 2: Programma di utilizzo della proprietà Funzione setTR ()
Qui, abbiamo mostrato la proprietà della funzione setTR () in Python.
Animale di classe:
animale_name = 'cat'
obj1 = animale ()
Print ("Prima del nome settrtr:", STR (OBJ1.animale_name))
setattr (obj1, 'animale_name', nessuno)
setttr (obj1, "dettaglio", "gattini persiani")
Stampa ("After Setttr Nome animale:" + STR (OBJ1.animale_name))
Print ("After Setattr Animal Detail:", STR (OBJ1.dettaglio))
Nello script precedente, abbiamo definito la classe a cui abbiamo assegnato il nome "Animal". Alla classe "animale". Abbiamo definito una variabile come "animale_name" che è impostata con il valore della stringa del nome dell'animale "Cat". Quindi, abbiamo un oggetto come "obj1" in cui viene invocato il "animale" di classe. Quindi, abbiamo stampato l'oggetto trasmettendolo nel metodo STR prima della funzione setattr ().
Successivamente, la funzione setTR () viene distribuita in cui viene superato il "obj1". Anche la variabile "Animal_name" viene passata con il valore "Nessuno". Qui, abbiamo distribuito un'altra funzione setTTR () al nuovo attributo e inizializzato con il nuovo valore. L'istruzione di stampa viene fornita per stampare l'oggetto dopo la funzione setTR ().
I risultati della funzione setattr () prima e dopo averlo utilizzato sono mostrate di seguito:
Esempio 3: programma di utilizzo della funzione setTTR () con DICT
Avere la capacità di impostare numerosi attributi contemporaneamente è uno dei vantaggi dell'utilizzo della funzione setattr (). Se ti veniva dato un dizionario delle caratteristiche di un oggetto, cosa conterrebbe? Per impostarli per i vari attributi di un oggetto, è possibile lanciarli sopra.
classe mydictclass (oggetto):
def __init __ (self, dict1):
per la chiave in dict1:
setattr (self, key, dict1 [chiave])
Se __Name__ == "__main__":
Dict1 = "Student_Name": "Edison",
"Student_id": "3278",
"Student_degree": "It"
my_result = mydictClass (dict1)
stampa ("Dopo la conversione del dizionario in classe:")
Stampa (my_result.Student_Name, my_result.Student_id, my_result.Student_degree)
stampa (tipo (my_result))
In questo particolare script, abbiamo definito per la prima volta la classe "MyDictClass". Abbiamo chiamato l'oggetto alla classe. Quindi, abbiamo una definizione del metodo INIT che prende il "sé" e il "dict1" come argomenti.
Successivamente, abbiamo il loop per loop su ciascuna chiave e il valore del dizionario dato. Abbiamo quindi distribuito la funzione setattr () in cui vengono aggiunti i valori di sé, chiave e dict. Quindi, all'interno della funzione principale di questo script, abbiamo creato il dizionario. Dopodiché, abbiamo superato quel dizionario alla classe "MyDictClass" con l'aiuto dell'oggetto appena creato - "My_result". Alla fine, abbiamo stampato il risultato.
Esempio 4: programma di utilizzo della funzione setTR () con eccezione
Qui, costruiremo gli attributi di sola lettura per l'oggetto. Se tentiamo di utilizzare la funzione setattr () per modificare il valore dell'attributo, viene sollevata un'eccezione.
Prodotto di classe:
def __init __ (self):
se stesso._Function = nessuno
funzione def (self):
print ('funzione chiamata')
Restituisci se stessi._Funzione
obj = proprietà (funzione, nessuno)
p1 = prodotto ()
setattr (p1, 'obj', 'laptop')
Innanzitutto, abbiamo la definizione di classe come "prodotto". Abbiamo definito il metodo Init in cui il sé come argomento è fornito alla classe. La variabile viene creata come una "funzione" che ha un valore impostato su nessuno. Quindi, abbiamo definito la funzione della variabile precedente, "funzione".
Successivamente, abbiamo creato un oggetto come "OBJ" in cui abbiamo il nome di proprietà "funzione". Alla funzione di proprietà, abbiamo passato la "funzione" variabile e il suo valore. La funzione setattr () è invocata a cui abbiamo fornito P1, OBJ e il nuovo valore che lancia l'eccezione.
Puoi vedere che la seguente eccezione viene sollevata dallo script precedente:
Conclusione
Questo articolo ci ha insegnato come utilizzare la funzione setattr () per impostare dinamicamente gli attributi dell'oggetto mentre un'applicazione è in esecuzione. Quando le proprietà sono sconosciute allo sviluppatore e un'API deve essere flessibile, questo è un modo molto utile per la programmazione orientata agli oggetti. Hai imparato come assegnare un valore all'attributo di un oggetto utilizzando la funzione Python setattr (). Anche la tua conoscenza della definizione della funzione con la funzione setattr (). Quindi, hai imparato come utilizzare il metodo setTR () durante l'utilizzo per impostare gli attributi con un dizionario Python.