[Python] Estensione classi

Daniele Zambelli daniele.zambelli a inwind.it
Ven 20 Giu 2008 21:34:17 CEST


On Friday 20 June 2008 16:58:18 Paolo Ferretti wrote:
> Anche questo è il mio primo messaggio su questa ml ;-)
> Allora, a me sembra corretta la tua soluzione. Se usi l'ultima versione
> di Python, però, ti consiglio di usare la nuova sintassi per le classi.
> Non cambia gran chè a livello pratico, ma penso sia buona abitudine
> utilizzare i consigli di una buona scrittura di codice Python! Quindi:

Concordo

> class Veicle(object):
>
>     def __init__(self, name, speed, fire_power, life = 500, shield=False):
>         self._name = name
>         self._speed=speed #km/h
>         self._fire_power=fire_power
>         self._shield = shield
>         self._life = life
>
> class Submarine(Veicle):
>     def __init__(self, name, speed, fire_power, deepness=0, life =
> 500, shield=False):
>         #Veicle.__init__(self, name, speed, fire_power)
> 	super(Submarine, self).__init__(name, speed, firepower)
>         self._deepness = deepness

Io trovo più comprensibile la sintassi:

> >         Veicle.__init__(self, name, speed, fire_power)

Ma c'è invece un problema: se nel creare un Submarine si dà a life un valore 
diverso da quello di default (lo stesso vale per shield) questo viene perso.

Se la classe Veicle viene usata solo come classe base per altre più 
specializzate, io toglierei (da Veicle) i valori dei default).

Ciao

-- 

Daniele                        www.fugamatematica.blogspot.com

                          giusto!
  _o)  (o_       (o_ _o)  nel verso
-./\\  //\.-     //\ /\\  forse è perché non guardiamo le cose
 _\_V  V_/_      V_/ \_V  Quando non ci capiamo,


Maggiori informazioni sulla lista Python