[Python] Semplice domanda sulle classi.

2014-01-05 Per discussione Gabriele Battaglia
Ciao.
Ho questo quesito, da principiante, sulle classi.

Creo la mia fabbrica di automobili:

class Veicoli:
ruote = 4

Per ora mi accontento e mi compro subito una macchina:

Auto = Veicoli()

Ora, siccome sono un tipo innovativo, mi metto li ed applico una modifica alla 
mia vettura nuova:

Auto.ruote = 5

Domanda: posso inserire del codice, nella classe, che forzi i dati membri ad 
assumere solo determinati valori, e non altri?
Ad esempio, in questo caso, Auto.ruote potrebbe sollevare una eccezione o 
essere aggiustato via codice ad un altro valore.
Grazie.
GB.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Semplice domanda sulle classi.

2014-01-05 Per discussione Diego Barrera

On 05/01/2014 00:22, Gabriele Battaglia wrote:

Ciao.
Ho questo quesito, da principiante, sulle classi.

Creo la mia fabbrica di automobili:

class Veicoli:
 ruote = 4

Per ora mi accontento e mi compro subito una macchina:

Auto = Veicoli()

Ora, siccome sono un tipo innovativo, mi metto li ed applico una modifica alla 
mia vettura nuova:

Auto.ruote = 5

Domanda: posso inserire del codice, nella classe, che forzi i dati membri ad 
assumere solo determinati valori, e non altri?
Ad esempio, in questo caso, Auto.ruote potrebbe sollevare una eccezione o 
essere aggiustato via codice ad un altro valore.
Grazie.

La strada e' quella di sovrascrivere il comportamento di default 
dell'assegnamento per l'attributo specifico.
Cioe' devi scrivere una metodo che viene richiamato ogni volta che viene 
assegnato un valore all'attributo specifico.


http://docs.python.org/2/library/functions.html#property

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Semplice domanda sulle classi.

2014-01-05 Per discussione Raffaele Salmaso
2014/1/5 Gabriele Battaglia gabriele.battag...@gmail.com:
 Ciao.
 Ho questo quesito, da principiante, sulle classi.

 Creo la mia fabbrica di automobili:

 class Veicoli:
 ruote = 4

 Per ora mi accontento e mi compro subito una macchina:

 Auto = Veicoli()

 Ora, siccome sono un tipo innovativo, mi metto li ed applico una modifica 
 alla mia vettura nuova:

 Auto.ruote = 5

 Domanda: posso inserire del codice, nella classe, che forzi i dati membri ad 
 assumere solo determinati valori, e non altri?
 Ad esempio, in questo caso, Auto.ruote potrebbe sollevare una eccezione o 
 essere aggiustato via codice ad un altro valore.
@property (ah, hai cambiato solo la classe, ma il codice che la usa
non serve cambiarlo ;) )


class Veicoli(object):
  def __init__(self, ruote=4):
self._ruote = ruote

  @property
  def ruote(self):
return self._route
  @ruote.setter
  def ruote(self, ruote):
if ruote not in (4,6, 8):
  raise ValueError('no')
self._ruote = ruote

Auto = Veicoli()
Auto.ruote = 5



-- 
| Raffaele Salmaso
| http://salmaso.org
| https://bitbucket.org/rsalmaso
| http://gnammo.com
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Semplice domanda sulle classi.

2014-01-05 Per discussione Marco Beri
2014/1/5 Raffaele Salmaso raffa...@salmaso.org

 if ruote not in (4,6, 8):
   raise ValueError('no')


Gravissimo errore! :-)

http://www.poettinger.at/img/landtechnik/schwadkreisel/fahrwerk722.jpg

Ciao.
Marco.
P.S. Per Gabriele: si tratta di una macchina agricola a 5 ruote.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Semplice domanda sulle classi.

2014-01-05 Per discussione Carlos Catucci

 P.S. Per Gabriele: si tratta di una macchina agricola a 5 ruote.


Nossignore, trattasi della notissima legge i Ohm: ogni quattro Ohm una Ohm
di scorta (in dialetto abruzzese rende meglio)

Carlos
-- 
Somos los que amasan, sin embargo no tenemos pan,
somos los que cavan el carbón, sin embargo tenemos frío
somos los que no tienen nada, y estamos viniendo a tomar el mundo.
Tassos Livaditis (Poeta greco, 1922, 1988)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python