[Python] property polimorfica

Marco Giusti marco.giusti a gmail.com
Mar 3 Giu 2014 16:00:39 CEST


On Tue, Jun 03, 2014 at 09:07:55AM -0400, Piergiuliano Bossi wrote:
> Ciao a tutti,
> 
> Vorrei definire una property in una gerarchia che si comporta diversamente
> in maniera polimorfica in funzione del tipo dell'oggetto su cui e'
> invocata. Mi vengono in mente 3 modi per farlo:
> 1) trattare la property con getter/setter alla Java e fare l'override solo
> dei comportamenti che cambiano => non pythonico, per cui direi proprio da
> evitare (ma ha i suoi vantaggi, vedi sotto)
> 2) usare il costrutto property => old style, richiede per forza di essere
> ridefinito nelle classi derivate, verboso
> 3) usare il decoratore @property => new style, analogo al precedente,
> comunque richiede di ridefinire la property nelle classi derivate che ne
> vogliono cambiare il comportamento
> 
> Ho messo alcuni esempi qua sotto. L'opzione #1 e' orrida, ma e' anche
> quella che richiede meno copia e incolla.

Questo, per me, è sufficiente ad una risposta per essere corretta.
Inoltre se il comportamento cambia in base alla (sotto)classe, un metodo
è più che giustificato.

Un altro modo per risolvere è di utilizzare __getattr__ e __setattr__ ma
lo trovo peggiore degli altri.

Ciao
m.


Maggiori informazioni sulla lista Python