<div dir="ltr">Scusatemi, qual'è il sistema più corretto per creare una proprietà pubblica in una classe ?<div>Ad esempio, diciamo che io voglia creare una classe con una proprietà "nome", e se non specifico il valore di questa proprietà voglio che mi venga restituito un valore di default.</div><div><br></div><div>Ho scritto tre volte la stessa classe usando tre varianti:</div><div><br></div><div>1) Nella prima uso i decoratori @property e @nome.setter per creare getter e setter</div><div><br></div><div>2) Nella seconda uso il decoratore @property sostanzialmente per "dichiarare" che avrò una proprietà pubblica, e poi uso i decoratori @nome.getter e @nome.setter per fare il lavoro</div><div><br></div><div>3) Nella terza creo due metodi get_nome e set_nome, e poi li do in pasto all'istruzione "property" per creare la mia proprietà.</div><div><br></div><div><br></div><div>Tutte e tre le soluzioni mi sembra che abbiano vantaggi e svantaggi. Ad esempio per poter usare i decoratori devo creare due metodi con lo stesso nome... per quello che ricordo io corrisponde a  un'"overloading di metodi", cosa che però mi sembra di ricordare non sia consentita in Python... quindi il decoratore chiede a Python di fare un'eccezione alla regola "niente overloading" ?</div><div>Nel terzo esempio invece io potrei teoricamente accedere al contenuto di "nome" sia richiamando la proprietà "nome", sia richiamando i metodi get_nome e set_nome.</div><div><br></div><div><br></div><div>Per consultazione ho messo online qui le tre classi che ho scritto:</div><div><br></div><div><a href="https://gist.github.com/fmaida/9e803fefb717c4e0df4f">https://gist.github.com/fmaida/9e803fefb717c4e0df4f</a><br></div><div><br></div><div><br></div><div><br></div><div>Secondo voi, qual'è il modo più corretto in questo caso?</div><div>Vi ringrazio anticipatamente per il vostro tempo.</div></div>