[Python] Python e puntatori - non mi fucilate!

Pietro Battiston toobaz a email.it
Mer 28 Gen 2009 12:57:33 CET


Ho bisogno di qualcosa di simile ad un puntatore, e prima che mi
insultiate vi spiego la mia situazione:

ho due moduli (in realtà sono ben più di due, e in una gerarchia più
complicata), a.py e b.py.

In a.py ho il seguente codice:

--------------------------------a.py---------------------------------

import b

parametro = valore

def cambia_il_valore_di_parametro(nuovo_valore):
    global parametro
    parametro = nuovo_valore
---------------------------------------------------------------------

in b.py devo ottenere il valore di "parametro"... che però può cambiare
nel tempo. Più precisamente, all'inizio è None, e ad un certo punto
viene settato (all'interno di una funzione in a, ovviamente come
"global"), e in b.py ho una funzione del tipo

----------------------------------b.py--------------------------------

if parametro:
   fai questo, utilizzando il valore di parametro
else:
   fai quest'altro

--------------------------------------------------------------------


Ora, il modo più semplice che mi viene in mente per fare questo è:

----------------------------a.py-----------------------------------

import b

parametro = [valore]

b.parametro = parametro

def cambia_il_valore_di_parametro(nuovo_valore):
   parametro.pop()
   parametro.append(nuovo_valore)

--------------------------------------------------------------------

----------------------------b.py-----------------------------------


def funzione_che_utilizza_il_parametro():
   parametro_vero = parametro[0]
   if parametro_vero:
      fai questo, utilizzando parametro_vero
   else:
      fai questo

--------------------------------------------------------------------


Però mi sembra schifoso. Cercando su google ho visto che ctypes ha delle
cose chiamate puntatori, ma mi sembra di complicarmi la vita
inutilmente; in fondo l'ineleganza della lista la posso tranquillamente
eliminare con una classettina mia fatta apposta... ed è quello che farò,
se nessuno sa darmi quella soluzione geniale che sicuramente mi è
sfuggita...

grazie

Pietro

P.S: giusto per concretezza e per accettare consigli o critiche
distruttive sull'organizzazione in sé, a.py è uno script che fa partire
una gtk.Window, b sono varie librerie che devono essere in grado
talvolta di creare dei gtk.Dialog, e vorrei dar loro l'istanza della
gtk.Window da dare come "parent" nell'instanziazione del Dialog.



Maggiori informazioni sulla lista Python