[PIPython] passaggio di variabili tra metodi

Gianluca Trombetta gianluca.trombetta
Mer 5 Gen 2005 09:15:17 CET


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


More information about the Python mailing list