View Full Version : Python - @property
A cosa serve questo costrutto?
Grazie in anticipo
cdimauro
14-12-2014, 21:38
Serve a definire delle proprietà, il cui accesso è regolato in maniera programmatica.
In concreto semplifica l'accesso a determinate informazioni che sono esposte dall'oggetto, e al contempo a controllare in maniera precisa in che modo ciò avvenga.
Per dirla in maniera ancora diversa, in Python non hai bisogno di definire methodi getter e setter per qualunque cosa. Definisce le apposite proprietà, e il programmatore che utilizzerà il tuo oggetto le utilizzerà come se fossero delle normali variabili, ottendo codice più semplice e leggibile.
Il modo migliore che hai per apprezzarle è leggerti la descrizione nel tutorial del linguaggio (che trovi nel sito di Python o nel file .chm se hai qualche versione installata), e fare qualche prova. ;)
molto gentile, qualche esempio?
cdimauro
20-12-2014, 06:06
Scusami per il ritardo, ma ho avuto un sacco di cose da fare.
Comunque qui (https://docs.python.org/2/howto/descriptor.html) trovi tutto quello che c'è da sapere sul concetto più generale di descrittore in Python, e in particolare delle property che sono basate su di esso.
In particolare le property sono spiegate qui (https://docs.python.org/2/howto/descriptor.html#properties), con tanto di esempi.
Ma la cosa più interessante è che, a partire da Python 2.6, si può utilizzare la funzione built-in property come decoratore per semplificare notevolmente la definizione delle property, rendendo anche il codice molto più leggibile. Ecco qui (https://docs.python.org/2/library/functions.html#property) la sezione apposita della documentazione. Come puoi vedere in particolare dall'ultimo esempio, definire una property molto facilmente adesso.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.