[Python] Getter e setter in python, non capisco...

Francesco Maida francesco.maida a gmail.com
Dom 28 Set 2014 18:45:22 CEST


Scusatemi, qual'è il sistema più corretto per creare una proprietà pubblica
in una classe ?
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.

Ho scritto tre volte la stessa classe usando tre varianti:

1) Nella prima uso i decoratori @property e @nome.setter per creare getter
e setter

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

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à.


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" ?
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.


Per consultazione ho messo online qui le tre classi che ho scritto:

https://gist.github.com/fmaida/9e803fefb717c4e0df4f



Secondo voi, qual'è il modo più corretto in questo caso?
Vi ringrazio anticipatamente per il vostro tempo.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20140928/55ab1551/attachment.html>


Maggiori informazioni sulla lista Python