[PIPython] passaggio di variabili tra metodi

Stefano Maniero smaniero
Mer 5 Gen 2005 09:44:48 CET


Concordo, ma quando si programma ad oggetti credo che l'information hiding sia
abbastanza importante: le variabili di un'oggetto (stato) dovrebbero essere
modificate solamente tramite metodi.

Forse questa deformazione mentale mi è data dal mio pregresso C++ prima e Java
poi.

Saluti
stefano

Scrive Gianluca Trombetta <gianluca.trombetta a epress.it>:

> Io credo che Adriano voglia una cosa del genere: come hai scritto tu al punto
> due ma senza utilizzare il metodo setVars(). Infatti si può accedere alla
> variabile come attributo dell'oggetto direttamente così:
>
> class Test:
> 	def __init__(self):
> 		self.a = 1
>
> test_ist = Test()
>
> print test_ist.a	# stampa uno
>
> test_ist.a += 2	# accesso diretto e modifica
>
> print test_ist.a  # stampa tre
>
>
> Ad ogni modo concordo con Stefano che è meglio fare un metodo che setti e
> restituisca il valore delle variabili. Anche se in certi casi io trovo comodo
> utilizzare delle variabili pubbliche.
>
> Ciao
> Gianluca
>
> -----Original Message-----
> From: python-bounces a lists.python.it [mailto:python-bounces a lists.python.it]
> On Behalf Of Stefano Maniero
> Sent: Tuesday, January 04, 2005 10:05 PM
> To: Gli utilizzatori italiani di Python
> Subject: Re: [PIPython] passaggio di variabili tra metodi
>
> Definire una variabile globale è banale:
>
> variabileGlobale = "valore"
> class Test:
>   def stamvaVariabileGlobale(self):
>     print variabileGlobale
>
> Ma solitamente le variabili globali raramente sono una buona scelta
> implementativa.
>
> Per le tue esigenze, se vuoi far ritornare ad una metodo di un oggetto dei
> valori multipli puoi:
>
> 1) Ritonrare una lista, una tupla o un dizionario
>
> class Test:
>   def ritornaLista(self):
>     return [ "valore1", "valore2", "valore3" ]
>
>   def ritornaTupla(self):
>     return [ "valore1", "valore2", "valore3" ]
>
>   def ritornaDizionario(self):
>     return { "var1" : "valore1", "var2" : "valore2" }
>
> 2) Oppure, utilizzando la programmazione ad oggetti, puoi definire le
> variabile
> a livello di oggetto:
>
> class Test:
>
>   def __init__(self,v1,v2):
>     self.var1 = v1
>     self.var2 = v2
>
>   def setVars(self, v1, v2):
>     self.var1 = v1
>     self.var2 = v2
>
>   def printValues(self):
>     print self.var1
>     print self.var2
>
> test = test( "valore1", "valore2")
> test.printValues()
> test.setVars( "valore3", "valore4")
> test.printValues()
>
> Ciao
> Stefano
>
> Adriano Allora ha scritto:
> > Il giorno 03/gen/05, alle 21:03, Stefano Maniero ha scritto:
> >
> >> E' un problema di "scope" della variabile luogo. Nel tuo caso la
> >> variabile luogo
> >> è locale alla funzione Gambe, perciò la variabile è visibile solamente
> >> all'interno della funzione.
> >
> >
> > come faccio a rendere una variabile globale? cioè, per ora questo metodo
> > va benissimo,
> > ma in futuro avrò bisogno di funzioni che generano più variabili con i
> > loro valori in modo da
> > passare valori e variabili ad altre funzioni.
> >
> > Inoltre, questo mi serve anche per variabili che possono o meno essere
> > incrementate all'interno
> > di funzioni che vengono ripetute (per ora, facendolo come speravo fosse
> > ragionevole farlo,
> > cioè passando le variabili, ad ogni iterazione riparte dai valori base).
> >
> > mi scuso se la domanda è imbecille, ma non ho trovato risposta nella
> > manualistica a mia disposizione
> > (compreso il manuale apogeo python2.1... GRRR, troppi euri e troppo
> > poche informazioni...)
> >
> >
> > grazie,
> > ciao
> >
> > alladr
> >
> >
> > |^|_|^|_|^|                |^|_|^|_|^|
> >  |         |                 |         |
> >  |         |                 |         |
> >  |         |*\_/*\_/*\_/*\_/*\_/* |         |
> >  |                                  |
> >  |                                  |
> >  |                                        |
> >  |       http://www.e-allora.net        |
> >  |                                  |
> >  |                                  |
> > **************************************
> >
> > _______________________________________________
> > La mailing list di python.it
> > python a lists.python.it
> > http://lists.python.it/cgi-bin/mailman/listinfo/python
>
>
> _______________________________________________
> La mailing list di python.it
> python a lists.python.it
> http://lists.python.it/cgi-bin/mailman/listinfo/python
> _______________________________________________
> La mailing list di python.it
> python a lists.python.it
> http://lists.python.it/cgi-bin/mailman/listinfo/python
>





More information about the Python mailing list